1. 程式人生 > >Android TabLayout修改選中字型大小

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);
        }
    }