最近项目有一个需求,就是标题的选中项需要加粗,由于项目中使用的都是TabLayout 而TabLayout又没有相应的属性支持,只好自己想办法了!
在网上找了半天,发现都是讲TabLayout 基本使用的,没有找到自己想要的东西,只好重另外一个角度来解决,TabLayout 可以自定义选中项的UI,所以可以从这方面入手,
最后的解决办法是为TabLayout 添加一个监听,并在监听中自定义选中项UI,代码和布局文件如下
tablayoutTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
View view = tab.getCustomView();
if (null == view) {
tab.setCustomView(R.layout.custom_tab_layout_text);
}
TextView textView = tab.getCustomView().findViewById(android.R.id.text1);
textView.setTextColor(tablayoutTablayout.getTabTextColors());
textView.setTypeface(Typeface.DEFAULT_BOLD);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
View view = tab.getCustomView();
if (null == view) {
tab.setCustomView(R.layout.custom_tab_layout_text);
}
TextView textView = tab.getCustomView().findViewById(android.R.id.text1);
textView.setTypeface(Typeface.DEFAULT);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
用到的布局文件如下
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>
需要注意的是 监听一定要在setupWithViewPager方法之前添加,否则会有bug