为什么写这篇文章?是因为搜了全网都没有一个很简洁的方式
有的只是去给 TabLayout 添加「自定义的布局」,然后再对 TabLayout 进行 Tab 卡片的切换进行监听,来更改 「自定义布局」 中的 文字的加粗或者其他。
都说懒是提高效率的重要原因,对于我搜到的解决方案,我是不想采纳的。
所以,我就开始反复琢磨,看有没有更简洁,更完美的方案,而TabLayout 并没有暴露出来更多的“漏洞”让我钻空子,所以我的方案一再被否定。
不过最终,在对懒的目标的坚持下,我得到了这样的方案。
监听 Tab 卡片的切换 + SpannableString 富文本
是不是写到这里,大家都懂了呢?
来看下具体的代码吧~
tablayout.setOnTabSelectedListener(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) { } });