TabLayout和ViewPager聯動時的問題及解決方案


問題概述

TabLayout搭配ViewPager關聯使用時,在未調用TabLayout的setupWithViewPager(mViewPager)方法之前,ViewPager的內容和TabLayout的title都顯示正常,但是兩個控件還沒有關聯,無法聯動。
但是一旦調用setupWithViewPager(mViewPager)方法聯動,雖然關聯成功了,ViewPager的內容也顯示正常,下方的指示條也還在,但是Tablayout的Tile就顯示為空白,沒有文字或圖標了。

問題原因

通過查詢源碼,發現TabLaout在調用setupWithViewPager(mViewPager);方法時,etupWithViewPager(mViewPager);會通過一個setPagerAdapter方法調用populateFromPagerAdapter()去關聯ViewPager和tablayout,但是在populateFromPagerAdapter()執行關聯之前,populateFromPagerAdapter()會執行removeAllTabs();移除所有的tab,然后再把ViewPager的title設置為Tablayout的title,所以如果我們寫Tablayout的時候是對Tablayout的title單獨設置的,那么單獨設置的title就會在setupWithViewPager(mViewPager)方法時被移除掉.

問題解決

因為在populateFromPagerAdapter()執行關聯時,它會把ViewPager的title設置為Tablayout的title,所以我們只要通過ViewPager的title來設置Tablayout的title就可以了,ViewPager的title可以在ViewPager的Adapter里重寫Adapter的getPageTitle方法,這樣就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM