14

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

就我而言,我有一个空的列表视图(设置了一个长的空视图标题),我想滚动到它的底部。

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

编辑:

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

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

getListView().scrollTo(mOffset)

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

4

10 回答 10

38

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

android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
于 2014-05-03T07:40:31.423 回答
19

使用以下

    lv.setSelection(adapter.getCount() - 1);
于 2013-09-25T05:45:30.987 回答
11

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

listView.smoothScrollToPosition(adapter.getCount());

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

listView.smoothScrollToPosition(0);
于 2014-02-11T00:25:39.940 回答
3

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

   listView.post(new Runnable(){
             public void run() {
             listView.setSelection(listView.getCount() - 1);
    }});
于 2014-08-14T20:46:27.267 回答
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);
        }
    });
}

它为我工作

于 2016-11-25T07:22:36.343 回答
1

使用以下并尝试。

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

于 2013-09-25T05:47:19.203 回答
1

你可能想试试myListView.smoothScrollToPosition(myListView.getCount() - 1)。这样,您不会被迫选择最后一行。另外,你会得到一些流畅、漂亮的滚动!(:

于 2015-06-14T23:12:34.760 回答
1

我有同样的问题,这对我最有效

listView.setSelection(listView.getAdapter().getCount()-1);
于 2015-12-22T08:00:30.640 回答
0

如果没有为您的 ListView 设置适配器,则它根本没有子级,空视图不是您的 ListView 的子级

于 2013-09-25T06:37:51.570 回答
-2

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

于 2013-09-25T05:37:11.833 回答