Android如何为listfragment制作动画setSelection()?

时间:2012-02-27 14:44:36

标签: android listview animation fragment

如何为listFragment创建平滑的setSelection(position)。对于常规列表视图,可以调用smoothScrollToPosition(position),但这仅适用于api lvl 8及更高版本,但这并不重要,因为它不适用于listfragment而不适用于api lvl 7.

非常感谢任何有助于实现这一点的想法和建议。

2 个答案:

答案 0 :(得分:22)

标记D是正确的,如果您要平滑滚动ListView中的ListFragment,则需要在getListView()上调用ListFragment,然后调用{{ 1}}在返回的smoothScrollToPosition(int)上。当然,这仅适用于API级别8,因为这是ListView引入smoothScrollToPosition(int)的超级类{。}}。

我想您可以查看AbsListView中的代码,看看它的作用,并尝试在您自己的ListViewAbsListView.java子类中复制它。很明显AbsListView只是在内部类ListView的实例上调用smoothScrollToPosition(pos),但是在start(pos)得到PositionScroller之后,在您自己的子类中复制该行为看起来有些复杂来自其他几个地方,例如PositionScrolleronDetachedFromWindow()。我根本不清楚如何根据API public void onWindowFocusChanged(boolean hasWindowFocus)版本将您的PositionScroller行为整合到您的子类中。

如果是我的决定,使用API​​ 7及更早版本在最新的data set中只有不到8%的设备访问Android电子市场,我只会尝试做一些更简单的事情,例如AbsListView每当API低于8(由Build.VERSION.SDK_INT检测到)时。

答案 1 :(得分:6)

我认为你不能为API等级7执行此操作,但看看你是否不能通过这样的方式平滑滚动:

listFragment.getListView().smoothScrollToPosition(0);