确定ViewPager中当前可见的片段

我有ViewPager ,我用来显示几个片段,我也有我的FragmentActivity TextView 。 我需要在TextView更改文本,具体取决于ViewPager当前select的ViewPager 。 我遇到的问题: ViewPager有一些caching机制,它实例化片段之前,它们是真正可见的用户,例如,当我select第二页ViewPager片段也在第三页上创build。 什么是我不能确定里面的片段是这个片段现在可见或它只是由ViewPager创build,但不是真正可见的用户。 我已经尝试使用OnPageChangeListener为此,但对其进行的更改对我来说是不可接受的(页面滚动,然后我的TextView已更改)

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

ViewPager.OnPageChangeListener是这里的显而易见的方法。 正如你已经注意到的, onPageSelected(int position)不会被调用,直到页面居中(如果你慢慢地通过触摸滚动页面,并保持)。

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

首先,你还没有定义“目前可见”。 在ViewPager ,可以在两个页面之间滑动时看到两个页面,那么哪一个页面在中间滑动时是“当前可见的”? 我的假设是,你会考虑哪个页面“更明显”是“目前可见”。

说了这些,我会考虑使用onPageScrolled (int position, float positionOffset, int positionOffsetPixels) 。 看来positionOffset可能能够给你你需要的信息。 我会用一些日志语句来testing它,看看有什么数据返回。