ListView滚动到所选项目

Ani*_*ita 49 android

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

and*_*rkz 72

您可以使用ListView的setSelection(int position)方法滚动到一行.

  • 这不适合我.我在http://developer.android.com/reference/android/widget/ListView.html#smoothScrollToPosition(int)上使用了smoothScrollToPostion(位置).重要说明:我必须在适配器上调用notifyDataSetChanged()之后调用它. (17认同)

小智 44

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


Xar*_*mer 26

对于直接滚动:

getListView().setSelection(11);
Run Code Online (Sandbox Code Playgroud)

为了平滑滚动:

getListView().smoothScrollToPosition(11);
Run Code Online (Sandbox Code Playgroud)

滚动到顶部

getListView().setSelectionAfterHeaderView();
Run Code Online (Sandbox Code Playgroud)

注意

尝试在post中调用它,因为有时候在调用它的方法时尚未创建listview

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


Dog*_*oge 5

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


Jin*_*n35 5

你应该使用transcript mode

getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
Run Code Online (Sandbox Code Playgroud)