【问题标题】:Determine which fragment currently visible in ViewPager确定当前在 ViewPager 中可见的片段
【发布时间】:2013-04-25 17:36:54
【问题描述】:

我有ViewPager,我用它来显示几个片段,我的FragmentActivity 上也有TextView。我需要根据ViewPager 中当前选择的片段更改TextView 中的文本。我遇到的问题:ViewPager 有一些缓存机制,它在片段对用户真正可见之前实例化它们,例如当我在ViewPager 中选择第二页时,第三页上的片段也创建了。更重要的是我无法确定片段内部是这个片段现在可见还是它只是由ViewPager 创建的,但对用户来说并不真正可见。我已尝试为此使用 OnPageChangeListener,但对它所做的更改对我来说速度太慢了(页面滚动,然后我的 TextView 已更改)

我真正需要的: 我需要确定当前在ViewPager 中可见的片段,无论是来自FragmentActivity 还是来自Fragment 本身。我怎样才能做到这一点?

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    ViewPager.OnPageChangeListener 是这里显而易见的方法。正如您所注意到的,onPageSelected(int position) 在页面居中之前不会被调用(如果您通过触摸并按住缓慢滚动页面)。

    我真正需要的是:我需要确定当前在 ViewPager 中可见的片段,无论是来自 FragmentActivity 还是来自 Fragment 本身。我怎样才能做到这一点?

    首先,您还没有定义“当前可见”。在ViewPager 中,两个页面在它们之间滑动时都可以看到,那么哪一个是“当前可见”的中间滑动?我的假设是,您会认为“更明显”的任何页面都是“当前可见的”。

    话虽如此,我会考虑使用onPageScrolled (int position, float positionOffset, int positionOffsetPixels)positionOffset 似乎可以为您提供所需的信息。我会用一些日志语句对其进行测试,以查看返回的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多