TabLayout 设置选中Tab字体加粗(非自定义View)

最近项目有标题的需求,又不想通过自定义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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个简单的 Java 代码实现自定义 TabLayout 并选中字体加粗的示例: 首先,创建一个自定义TabLayout 类 CustomTabLayout 继承自 TabLayout: ```java public class CustomTabLayout extends TabLayout { public CustomTabLayout(Context context) { super(context); } public CustomTabLayout(Context context, AttributeSet attrs) { super(context, attrs); } public CustomTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void addTab(Tab tab, boolean setSelected) { super.addTab(tab, setSelected); if (setSelected) { // 设置选中Tab字体加粗 setTabBold(tab); } } @Override public void setOnTabSelectedListener(@Nullable OnTabSelectedListener listener) { super.setOnTabSelectedListener(new OnTabSelectedListener() { @Override public void onTabSelected(Tab tab) { // 设置选中Tab字体加粗 setTabBold(tab); if (listener != null) { listener.onTabSelected(tab); } } @Override public void onTabUnselected(Tab tab) { // 取消选中Tab字体加粗 setTabNormal(tab); if (listener != null) { listener.onTabUnselected(tab); } } @Override public void onTabReselected(Tab tab) { if (listener != null) { listener.onTabReselected(tab); } } }); } // 设置选中Tab字体加粗 private void setTabBold(Tab tab) { TextView textView = tab.getCustomView().findViewById(android.R.id.text1); textView.setTypeface(null, Typeface.BOLD); } // 取消选中Tab字体加粗 private void setTabNormal(Tab tab) { TextView textView = tab.getCustomView().findViewById(android.R.id.text1); textView.setTypeface(null, Typeface.NORMAL); } } ``` 在上面的代码中,我们重写了 addTab 和 setOnTabSelectedListener 方法来实现选中Tab 加粗。在 addTab 方法中,我们设置选中Tab加粗字体;在 setOnTabSelectedListener 方法中,我们监听选中Tab 和取消选中Tab,并分别设置加粗字体和普通字体。 最后,在布局文件中使用 CustomTabLayout 来代替 TabLayout: ```xml <com.example.CustomTabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" app:tabGravity="fill" /> ``` 这样,就可以实现自定义 TabLayout 并选中字体加粗了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值