【问题标题】:ViewPager getScrollX return 0 when fragment resumes/recreates当片段恢复/重新创建时,ViewPager getScrollX 返回 0
【发布时间】:2014-05-07 20:41:33
【问题描述】:

我正在尝试创建一个 Velocity View Pager,我可以在其中像画廊视图一样滚动浏览页面。我在进行滚动计算时遇到问题。我正在为 ViewPager 使用 FragmentStatePagerAdapter。对于正常的第一次运行,getScrollBy 返回实际滚动位置,将第一个元素设置为 0,这很酷。即,如果我在第 3 页,getScrollX 返回 2400(每页 800 像素)等等。

当我从后台恢复后获得托管 viewpager 的片段时,问题就出现了。这次我的第 3 页变为 0,而我的第一页变为 -2400 位置。一些当android重新膨胀适配器时,它认为当前位置为0。我已经尝试了各种使用setCurrentItem的方法。有些我觉得computeScroll 不起作用。

如果有人能建议我如何让 getScrollX 返回考虑 start 为 0 而不是新膨胀的当前位置的位置,那就太好了。

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

【问题讨论】:

    标签: android android-fragments android-viewpager fragmentpageradapter


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢.. 我想知道是否有任何方法可以使视图无效。但正如你所建议的那样,我将使用滚动偏移。谢谢
    • 如何获取你所指的“当前位置”?
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2016-05-19
    • 1970-01-01
    • 2013-08-27
    相关资源
    最近更新 更多