最近项目有标题的需求,又不想通过自定义customerView的方式来写,看到一个大佬写的方法
TabLayout 设置选中Tab字体加粗,这可能是全网最新写法_tablayout 选中加粗_思钱想厚_hy的博客-CSDN博客
很奇怪 我使用了并不能生效无奈 按照作者的思路发现了另外一种方法,直接上代码
/** 动态处理选中状态为加粗 否则不加粗*/
fun handlerTabLayoutBold(tab: TabLayout) {
tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
handlerTabLayoutBold(tab, true)
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
handlerTabLayoutBold(tab, false)
}
override fun onTabReselected(tab: TabLayout.Tab?) {}
})
}
/** 修改单独某一个的粗细*/
fun handlerTabLayoutBold(tab: TabLayout.Tab?, isBold: Boolean) {
tab?.view?.forEach { view ->
if (view is TextView) {
if (isBold) {
view.typeface = Typeface.DEFAULT_BOLD
} else {
view.typeface = Typeface.DEFAULT
}
}
}
}
因为Tablayout生成的时候默认是加粗的所以在初始化的时候要设置为default
TabLayoutMediator(mBinding.tablayout, mBinding.viewpager) { tab, position ->
tab.text = mTitles[position]
handlerTabLayoutBold(tab, position == 0)
}.attach()
使用
handlerTabLayoutBold(mBinding.tablayout)