https://blog.csdn.net/psjx0127/article/details/100661344
最近项目有一个需求,就是标题的选中项需要加粗放大,由于项目中使用的都是TabLayout 而TabLayout又没有相应的属性支持,只好自己想办法了!
TabLayout 可以自定义选中项的UI,所以可以从这方面入手,
最后的解决办法是为TabLayout 添加一个监听,并在监听中自定义选中项UI,代码和布局文件如下
mTabLayout.addOnTabSelectedListener(new ZTabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(ZTabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
View view = tab.getCustomView();
if (null == view) {
tab.setCustomView(R.layout.tab_layout_text);
}
TextView textView = tab.getCustomView().findViewById(android.R.id.text1);
textView.setTextAppearance(FinancialMainActivity.this, R.style.TabLayoutTextSize);
}
@Override
public void onTabUnselected(ZTabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
View view = tab.getCustomView();
if (null == view) {
tab.setCustomView(R.layout.tab_layout_text);
}
TextView textView = tab.getCustomView().findViewById(android.R.id.text1);
textView.setTextAppearance(FinancialMainActivity.this, R.style.TabLayoutTextSize_two);
}
@Override
public void onTabReselected(ZTabLayout.Tab tab) {
}
});
//监听一定要在setupWithViewPager方法之前添加,
mTabLayout.setupWithViewPager(mViewPager);
用到的布局文件如下
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:textColor="@color/color_white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>
选中样式加粗和放大字体,写在style中
<style name="TabLayoutTextSize">
<item name="android:textStyle">bold</item>
<item name="android:textSize">18sp</item>
</style>
默认字体
<style name="TabLayoutTextSize_two">
<item name="android:textSize">@dimen/font16</item>
<item name="android:textStyle">normal</item>
</style>