异常:
导入优秀开源项目 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中的?????
果不其然,项目引用错了布局文件,这就是原因
修改其中一个文件名称后,完美显示。
.