我虽然这是一个简单的任务,但显然没有办法将listview滚动到底部。我发现的所有解决方案都使用setSelection(lastItem)
方法的变体,它只将选项设置为最后一项,但不会滚动到最后一项。
在我的情况下,我有一个空列表视图(设置了长空视图标题),我想滚动到它的底部。
那么,有没有办法做到这一点?
编辑:
因此,对于那些感兴趣的工作解决方案是:
getListView().setSelectionFromTop(0, -mHeader.getHeight());
和
getListView().scrollTo(mOffset)
这也有效,右偏移(根据当前滚动位置计算),但可能会给你一些意想不到的结果。
答案 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());