Android TabLayout修改選中字型大小
阿新 • • 發佈:2019-01-25
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);
}
}