Android TabLayout修改选中字体大小

style的方式只能改整体的大小,修改选中字体大小就需要用到CustomView了

效果:

这里写图片描述

核心就是给TabLayout设置自定义布局,通过自定义布局拿到id,然后设置选中时的字体大小

自定义tab布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/tab_item"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:gravity="center"
              android:orientation="vertical">

    <TextView
        android:id="@+id/tab_item_time"
        android:layout_width="wrap_content"
        android:layout_height="24dp"
        android:gravity="bottom"
        android:text="22:00"
        android:textColor="@drawable/selector_text_color"
        android:textSize="12sp"/>

    <TextView
        android:id="@+id/tab_item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="秒杀中"
        android:textColor="@drawable/selector_text_color"
        android:textSize="12sp"/>

</LinearLayout>

代码引用并设置

 private void initTabView() {
        holder = null;
        for (int i = 0; i < tabs.size(); i++) {
            //获取tab
            TabLayout.Tab tab = mTabLayout.getTabAt(i);
            //给tab设置自定义布局
            tab.setCustomView(R.layout.tab_item);
            holder = new ViewHolder(tab.getCustomView());
            //填充数据
            holder.mTabItemTime.setText(String.valueOf(tabTimes.get(i)));
            holder.mTabItemName.setText(tabs.get(i));
            //默认选择第一项
            if (i == 0) {
                holder.mTabItemTime.setSelected(true);
                holder.mTabItemName.setSelected(true);
                holder.mTabItemTime.setTextSize(18);
                holder.mTabItemName.setTextSize(12);
            }
        }

        mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                holder = new ViewHolder(tab.getCustomView());
                holder.mTabItemTime.setSelected(true);
                holder.mTabItemName.setSelected(true);
                //设置选中后的字体大小
                holder.mTabItemTime.setTextSize(18);
                holder.mTabItemName.setTextSize(12);
                //关联Viewpager
                mViewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                holder = new ViewHolder(tab.getCustomView());
                holder.mTabItemTime.setSelected(false);
                holder.mTabItemName.setSelected(false);
                //恢复默认字体大小
                holder.mTabItemTime.setTextSize(12);
                holder.mTabItemName.setTextSize(12);
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
    }

    class ViewHolder {
        TextView mTabItemTime;
        TextView mTabItemName;

        ViewHolder(View tabView) {
            mTabItemTime = (TextView) tabView.findViewById(R.id.tab_item_time);
            mTabItemName = (TextView) tabView.findViewById(R.id.tab_item_name);
        }
    }

详见 > github:https://github.com/yechaoa/MaterialDesign 【TabLayoutCustomViewActivity】


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现 Android TabLayout 选中加粗的效果,你可以通过创建一个自定义的 `TabLayout.OnTabSelectedListener` 来实现。 在自定义的 `OnTabSelectedListener` 中,你可以通过设置 `setTypeface` 和 `setFakeBoldText` 方法来实现选中的 Tab 文字加粗的效果。 以下是一个示例代码: ```java TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { //设置选中时文字的样式 TextView textView = (TextView)tab.getCustomView(); textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); textView.setFakeBoldText(true); } @Override public void onTabUnselected(TabLayout.Tab tab) { //设置未选中时文字的样式 TextView textView = (TextView)tab.getCustomView(); textView.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); textView.setFakeBoldText(false); } @Override public void onTabReselected(TabLayout.Tab tab) { } }); ``` 在上面的示例代码中,`addTabSelectedListener` 方法用于添加自定义的 `OnTabSelectedListener`,其中 `onTabSelected` 方法用于设置选中的 Tab 文字样式,`onTabUnselected` 方法用于设置未选中的 Tab 文字样式。 在 `onTabSelected` 方法中,我们通过 `getTypeface` 方法获取当前选中的 Tab 的字体样式,然后使用 `Typeface.defaultFromStyle` 方法创建一个加粗的字体样式,接着使用 `setFakeBoldText` 方法将选中的 Tab 的文字加粗。 在 `onTabUnselected` 方法中,我们只需要恢复未选中的 Tab 的字体样式即可。 需要注意的是,在设置 Tab 的自定义视图时,你需要使用 `setCustomView` 方法将自定义的视图设置给 Tab,如下所示: ```java for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); TextView textView = new TextView(this); textView.setText("Tab " + (i + 1)); textView.setGravity(Gravity.CENTER); tab.setCustomView(textView); } ``` 上面的代码中,我们使用 `TextView` 创建了一个自定义的视图,然后使用 `setCustomView` 方法将自定义的视图设置给 Tab。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yechaoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值