我有一个带有编辑文本的ListView,下面有一个按钮。当我单击listView项时,键盘出现并向上推动编辑文本和按钮。我希望列表滚动到所选项目。任何的想法?感谢
答案 0 :(得分:71)
您可以使用ListView的setSelection(int position)
方法滚动到一行。
答案 1 :(得分:44)
您可以使用ListView的smoothScrollToPosition(int position)
滚动到列表中的特定位置。
答案 2 :(得分:24)
直接滚动:
getListView().setSelection(11);
平滑滚动:
getListView().smoothScrollToPosition(11);
滚动到顶部
getListView().setSelectionAfterHeaderView();
注意
尝试在帖子中调用它,因为有时候在调用它的方法
时尚未创建listview
getListView().postDelayed(new Runnable() {
@Override
public void run() {
lst.setSelection(15);
}
},100L);
答案 3 :(得分:4)
在点击的列表项上设置一个侦听器,然后在单击时使用View.getTop()
或View.getBottom()
获取它在父级中的位置。然后,您可以使用ListView.scrollTo(x, y)
滚动到列表项。
答案 4 :(得分:4)
您应该使用transcript mode
:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
答案 5 :(得分:3)
哟可以寻找
listView.setSelectionFromTop(position,distanceFromHeader);
它会将项目定位在列表视图顶部下方指定像素的位置
答案 6 :(得分:2)
您可以使用
smoothScrollToPosition(position)
只需将项目的位置增加为1,即可获得项目视图。
getListView().smoothScrollToPosition(position + 1);
答案 7 :(得分:1)
使用持续时间可提供更好的用户体验。使用此功能,并添加持续时间。将项目平滑地滚动到列表视图的顶部。
int duration = 500; //miliseconds
int offset = 0; //fromListTop
listview.smoothScrollToPositionFromTop(position,offset,duration);