如何在Android中将ListView Scroll位置设置为bottom?

时间:2014-01-27 05:15:35

标签: android android-listview

我知道这个问题之前被问过几次,但我的情况与其他问题有点不同。

我有一个listview,最初我想将滚动位置设置到列表的底部。

我尝试了两种方式。

第一个

mCommentListView.setSelection(mAdaptor.getCount()-1);

第二个

mCommentListView.post(new Runnable() {
    @Override
    public void run() {
        mCommentListView.setSelection(mAdaptor.getCount()-1);
    }
});

所以我的问题是上面的代码都可以正常使用模拟器,但它不能与真实设备一起使用。

我错过了什么?

7 个答案:

答案 0 :(得分:12)

试试这个。以下代码对我来说很好。

为加载列表视图提供时间延迟500,然后调用setselection方法。

commentslistview.postDelayed(new Runnable() {
    @Override
    public void run() {
        commentslistview.setSelection(commentsarraylist.size());
    }
}, 500);

答案 1 :(得分:8)

您是否在 ListView 中设置了这些内容?

android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"

答案 2 :(得分:2)

listView.setAdapter(adapter);
listView.setSelection(position);

答案 3 :(得分:1)

试试这个

srollView.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {

            @Override
            public void onGlobalLayout() {

                mScrollView.post(new Runnable() {

                    @Override
                    public void run() {


                        scrollView.smoothScrollTo(0,scrollView.getBottom());
                        }
                    });
                }
        });

答案 4 :(得分:1)

:D我刚刚设置:

mListView.setSelection(adapter.getCount() - 1);

我的布局

<ListView
    android:id="@+id/tb_body"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:choiceMode="singleChoice"
    android:stackFromBottom="true"
    tools:ignore="NestedScrolling" >
</ListView>

SET

android:choiceMode="singleChoice"
android:stackFromBottom="true"

希望它能与你合作。

答案 5 :(得分:0)

尝试,

mCommentListView.getChildAt(mCommentListView.getChildCount() - 1).requestFocus();

答案 6 :(得分:0)

尝试以下代码

commentslistview.smoothScrollToPosition(commentsarraylist.size() -1);