通过监听 Tab 卡片的切换 + SpannableString 富文本的方式。
来看下具体的代码吧~
// tabLayout的滑动选择监听
binding.previewTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab == null || tab.getText() == null) {
return;
}
// 选中字体加粗
String trim = tab.getText().toString().trim();
SpannableString spStr = new SpannableString(trim);
StyleSpan styleSpan_B = new StyleSpan(Typeface.BOLD);
spStr.setSpan(styleSpan_B, 0, trim.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tab.setText(spStr);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
if (tab == null || tab.getText() == null) {
return;
}
// 选中字体不加粗
String trim = tab.getText().toString().trim();
SpannableString spStr = new SpannableString(trim);
StyleSpan styleSpan_B = new StyleSpan(Typeface.NORMAL);
spStr.setSpan(styleSpan_B, 0, trim.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tab.setText(spStr);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});