異常:
導入優秀開源項目 FlycoTabLayout 使用後,Tab莫名其妙的不顯示文字,頭疼。
解決辦法:
項目中存在兩個layout_tab.xml文件 ,將其中一個佈局文件重命名,只能這麼辦了。
下面是解決過程,如節省時間,可跳過。
經過一番斷點調試發現:
tv_tab_title 爲null,這就很蛋疼了
private void addTab(final int position, String title, View tabView) {
TextView tv_tab_title = tabView.findViewById(R.id.tv_tab_title);
if (tv_tab_title != null && title != null) {
tv_tab_title.setText(title);
}
tabView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position = mTabsContainer.indexOfChild(v);
if (position != -1) {
setCurrentTab(position);
}
}
});
再看引用代碼:
public void notifyDataSetChanged() {
mTabsContainer.removeAllViews();
this.mTabCount = mTitles == null ? mViewPager.getAdapter().getCount() : mTitles.size();
View tabView;
for (int i = 0; i < mTabCount; i++) {
tabView = View.inflate(mContext, R.layout.layout_tab, null);
CharSequence pageTitle = mTitles == null ? mViewPager.getAdapter().getPageTitle(i) : mTitles.get(i);
addTab(i, TextUtils.isEmpty(pageTitle) ? "" : pageTitle.toString(), tabView);
}
if (mCurrentTab != mViewPager.getCurrentItem()) {
setCurrentTab(mViewPager.getCurrentItem());
}
updateTabStyles();
}
重點這句:
tabView = View.inflate(mContext, R.layout.layout_tab, null);
於是,我查看了layout_tab.xml佈局文件,我想怎麼就找不到了呢?
結果發現:
我的項目中有兩個layout_tab.xml文件,一個是另一個開源庫KChart中的?????
果不其然,項目引用錯了佈局文件,這就是原因
修改其中一個文件名稱後,完美顯示。
.