如何在活动启动时滚动到ScrollView中的底部

Pal*_*alo 95 android scroll

我在ScrollView中显示一些数据.在活动启动时(方法onCreate)我用数据填充ScrollView并想要滚动到底部.

我试着用getScrollView().fullScroll(ScrollView.FOCUS_DOWN).当我将其作为按钮单击时的操作时,它可以工作,但它在onCreate方法中不起作用.

有没有办法在活动启动时将ScrollView滚动到底部?这意味着当第一次显示时,视图已滚动到底部.

Pal*_*alo 212

它需要做如下:

    getScrollView().post(new Runnable() {

        @Override
        public void run() {
            getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
        }
    });
Run Code Online (Sandbox Code Playgroud)

这样,视图首先更新,然后滚动到"新"底部.

  • 而post()使用postDelayed()延迟100ms.它将适用于任何活动的生命周期点. (3认同)

Har*_*hid 47

添加数据后,请输入以下代码:

final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
    @Override
    public void run() {
        scrollview.fullScroll(ScrollView.FOCUS_DOWN);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这只适用于postDelayed而不是post.只有100毫秒的延迟. (4认同)

son*_*ida 29

这对我有用:

scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        scrollview.post(new Runnable() {
            public void run() {
                scrollview.fullScroll(View.FOCUS_DOWN);
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止这个问题的最佳答案.很多其他的方法是有条件的,但这一个很棒,工作超级好:) (2认同)

小智 17

您可以在布局文件中执行此操作:

                android:id="@+id/listViewContent"
                android:layout_width="wrap_content"
                android:layout_height="381dp" 
                android:stackFromBottom="true"
                android:transcriptMode="alwaysScroll">
Run Code Online (Sandbox Code Playgroud)

  • 仅当滚动视图是列表视图时才有效. (8认同)

Mak*_*vin 8

 scrollView.postDelayed(new Runnable() {
        @Override
        public void run() {
            scrollView.fullScroll(ScrollView.FOCUS_DOWN);
        }
    },1000);
Run Code Online (Sandbox Code Playgroud)


F.O*_*O.O 5

尝试这个

    final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
    scrollview.post(new Runnable() {
       @Override
       public void run() {
         scrollview.fullScroll(ScrollView.FOCUS_DOWN);
       }
    });
Run Code Online (Sandbox Code Playgroud)