ListView滚动到选定的项目

我有一个编辑文本和下面的button的ListView。 当我点击一个listView项目时,键盘会出现,并按下编辑文本和button。 我想要列表滚动到选定的项目。 任何想法? 谢谢

你可以使用ListView的setSelection(int position)方法来滚动到一行。

您可以使用ListView的smoothScrollToPosition(int position)滚动到列表中的特定位置。

对于直接滚动:

 getListView().setSelection(11); 

为了顺利滚动:

 getListView().smoothScrollToPosition(11); 

滚动到顶部

 getListView().setSelectionAfterHeaderView(); 

注意

尝试在后期调用它,因为有时候你调用它的方法时,还没有创buildlistview

 getListView().postDelayed(new Runnable() { @Override public void run() { lst.setSelection(15); } },100L); 

你应该使用transcript mode

 getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL); 

在被点击的列表项上设置一个监听器,然后在单击时使用View.getTop()View.getBottom()来获取它在父代中的位置。 然后,您可以使用ListView.scrollTo(x, y)滚动到列表项目。

哟可以找

listView.setSelectionFromTop(position,distanceFromHeader);

它将位置的位置,在列表视图顶部以下的指定像素

使用持续时间可带来更好的用户体验 使用这个,加上持续时间。 将项目顺利滚动到列表视图的顶部。

 int duration = 500; //miliseconds int offset = 0; //fromListTop listview.smoothScrollToPositionFromTop(position,offset,duration); 
  • 缩短持续时间,使滚动更快

您可以使用

 smoothScrollToPosition(position) 

只需增加1项的位置,就可以得到项目的视图。

 getListView().smoothScrollToPosition(position + 1);