2013-04-25 90 views
8

我已使用ViewPager显示少量片段,我的FragmentActivity上也有TextView。我需要更改TextView中的文本,具体取决于ViewPager中当前选择哪个片段。我遇到的问题:ViewPager有一些缓存机制,它在用户真正可见之前实例化片段,例如当我在第三个页面上选择ViewPager片段中的第二个页面时也会创建。什么是我不能确定里面的片段是这个片段现在可见或它只是由ViewPager创建,但不是真正可见的用户。我tryed使用OnPageChangeListener这一点,但它所做的更改是不可接受的慢,我(页面滚动,然后我TextView已经改变)

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

回答

7

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

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

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

说了这话,我会考虑使用onPageScrolled (int position, float positionOffset, int positionOffsetPixels)。看起来positionOffset可能能够为您提供所需的信息。我会用一些日志语句来测试它,以查看返回的数据。