2013-04-25 91 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可能能夠爲您提供所需的信息。我會用一些日誌語句來測試它,以查看返回的數據。