ListView滚动到所选项目

时间:2010-08-17 13:50:40

标签: android

我有一个带有编辑文本的ListView,下面有一个按钮。当我单击listView项时,键盘出现并向上推动编辑文本和按钮。我希望列表滚动到所选项目。任何的想法?感谢

8 个答案:

答案 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);
  • 减少持续时间以使滚动更快