如何将ListView滚动到底部?

时间:2013-09-25 05:34:27

标签: android android-listview android-scroll

我虽然这是一个简单的任务,但显然没有办法将listview滚动到底部。我发现的所有解决方案都使用setSelection(lastItem)方法的变体,它只将选项设置为最后一项,但不会滚动到最后一项。

在我的情况下,我有一个空列表视图(设置了长空视图标题),我想滚动到它的底部。

那么,有没有办法做到这一点?

编辑:

因此,对于那些感兴趣的工作解决方案是:

getListView().setSelectionFromTop(0, -mHeader.getHeight());

getListView().scrollTo(mOffset)

这也有效,右偏移(根据当前滚动位置计算),但可能会给你一些意想不到的结果。

10 个答案:

答案 0 :(得分:38)

如果您希望列表视图始终在底部滚动,即使您正在动态更新列表视图,也可以在列表视图中添加这些属性。

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

答案 1 :(得分:19)

使用以下

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

答案 2 :(得分:11)

如果您想以编程方式使用滚动动画,可以使用以下方法轻松滚动到列表底部:

listView.smoothScrollToPosition(adapter.getCount());

可以使用以下方式滚动到列表的最顶部:

listView.smoothScrollToPosition(0);

答案 3 :(得分:3)

尝试这个..它会解决你的问题,我尝试了它,效果很好。

   listView.post(new Runnable(){
             public void run() {
             listView.setSelection(listView.getCount() - 1);
    }});

答案 4 :(得分:2)

private void scrollMyListViewToBottom() {
    myListView.post(new Runnable() {
        @Override
        public void run() {
            // Select the last row so it will scroll into view...
            myListView.setSelection(myListAdapter.getCount() - 1);
        }
    });
}

它为我工作

答案 5 :(得分:1)

使用以下内容并尝试。

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

答案 6 :(得分:1)

您可能想尝试{{1}}。这样,您就不会被迫选择最后一行。另外,你会得到一些流畅,漂亮的滚动! (:

答案 7 :(得分:1)

我有同样的问题,这最适合我

listView.setSelection(listView.getAdapter().getCount()-1);

答案 8 :(得分:0)

如果没有适配器设置到ListView,那么它根本就没有子节点,空视图不是ListView的子节点

答案 9 :(得分:-2)

尝试使用list.scrollTo(0, list.getHeight());