我在 Fragment 中有一个 ListView,它作为选项卡添加到 ViewPager 中。我希望用户能够通过简单地点击他们已经在的选项卡 (onTabReselected()) 来滚动“backToTop”。我已经有一个工作代码可以做到这一点;然而,我使用的代码滚动回位置 0 的时间太长,这在小列表上非常整洁,但在 250 首歌曲的集合中,它肯定会让用户烦恼。
这是我的代码:
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
switch (tab.getPosition()) {
case 0:
if (tab.getPosition() == mCurPagerItem) {
final ListView list = (ListView) findViewById(android.R.id.list);
list.smoothScrollToPosition(0);
}
break;
case 1:
if (tab.getPosition() == mCurPagerItem) {
final GridView list = (GridView) findViewById(R.id.artist_grid);
list.smoothScrollToPosition(0);
}
break;
case 2:
if (tab.getPosition() == mCurPagerItem) {
final ExpandableListView list = (ExpandableListView) findViewById(R.id.exp_list);
list.smoothScrollToPosition(0);
}
break;
default:
break;
}
}
我在位置之间切换的地方,因为我的不同 fragment 具有不同的“列表”类型。正如我所说,这段代码确实运行良好,但是有没有更快的方法可以滚动回顶部?更即时的东西。
澄清一下,当我说它“需要太长时间”时,那是因为 smoothScrollToPosition 本身是一种在列表上滚动的缓慢方式,据说是为了让它看起来更好看。
注意我试过:
list.scrollTo(0, 0);
但这实际上似乎对 listView 的当前位置没有任何影响。我想这更像是一个 View 调用,一个 ListView 方法本身。
有什么想法吗?
最佳答案
尝试调用 setSelection()
,它不执行任何动画:
list.setSelection(0);
关于android - 实现 "faster"backToTop - ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14005949/