片段恢复/重新创建时,ViewPager getScrollX返回0

时间:2014-05-07 12:33:49

标签: android android-fragments android-viewpager fragmentpageradapter

我正在尝试创建一个Velocity View Pager,我可以在其中滚动浏览图库中的页面。我在进行滚动计算时遇到问题。我正在为ViewPager使用FragmentStatePagerAdapter。对于正常的第一次运行,事情很酷,getScrollBy返回实际滚动位置,第一个元素为0.即如果我在第3页,getScrollX返回2400(每页800px),依此类推。

当我从backstack获得简历后获取托管viewpager的片段时出现问题。这次我的第3页变为0,我的第一页变为-2400位置。一些如何当android重新定义适配器时它将当前位置视为0.我已经尝试了使用setCurrentItem的所有排序。我觉得computeScroll不起作用。

如果任何人都可以建议如何让getScrollX返回位置,考虑start为0而不是新膨胀的当前位置,这将是很好的。

否则我每次恢复时都无法创建新片段。

1 个答案:

答案 0 :(得分:1)

你知道目前的位置,对吧?我使用ViewPager.getWidth()将当前位置乘以ViewPager的宽度。由于2400是以像素为单位,因此您可以使用getWidth()中的宽度(以像素为单位)来确定位置。

需要注意的一件事是确保在视图充气和测量后使用getWidth()值,否则宽度将返回零。