關(guān)于如何自定義TbaLayout可以去網(wǎng)上搜,有很多文章介紹,這里就不敘述了,一般自定義Tab需要調(diào)用tab的setCustomView方法,
但是發(fā)現(xiàn)設(shè)置無效,后來查看源碼才知道,原來在調(diào)用tab.setupWithViewPager方法后會(huì)刪掉我們之前自定義的tab,所以解決辦法就是:
在調(diào)用tablayout.setupWithViewPager方法之后必須重新調(diào)用一下各個(gè)tab的setCustomView方法
//1.先設(shè)置Adapter
mVpViewPager.setAdapter(mPagerAdapter);
//2.將TabLayout和Viewpage關(guān)聯(lián)上
mTab.setupWithViewPager(mVpViewPager);
//3.重點(diǎn)來了:必須重新調(diào)用setCustomView方法來設(shè)置自定義的View
for (int i = 0; i < mTlTab.getTabCount(); i++) {
mTlTab.getTabAt(i).setCustomView(mPagerAdapter.getTabView(i));
}
//4. 設(shè)置監(jiān)聽TabSelectedListener事件,來動(dòng)態(tài)的更新自定義Tab的顯示狀態(tài)
mTlTab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//TODO 選中當(dāng)前的Tab觸發(fā)此方法
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
//TODO 取消上次選中的tab會(huì)觸發(fā)此方法
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});