- 初始化
1)在xml中設(shè)置顏色變化
其中,tabTextColor未未選中時的顏色,tabSelectedTextColor為選中時的顏色。app:tabTextColor="@color/white_7f" app:tabSelectedTextColor="@color/white"
2)對已定義好的TabLayout進行處理。//獲取TabLayout設(shè)置的字體顏色,包含tabTextColor及tabSelectedTextColor ColorStateList colorStateList = tabLayout.getTabTextColors(); //對每個Tab 設(shè)置customView,設(shè)置為TextView,用于設(shè)置字體大小等 for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); assert tab != null; String tabStr = Objects.requireNonNull(tab.getText()).toString(); if(tab.getCustomView() == null || !(tab.getCustomView() instanceof TextView)){ TextView tv = new TextView(tabLayout.getContext()); tv.setTextColor(colorStateList); tv.setText(tabStr); tv.setTextSize(tab.isSelected()?selectSize:unSelectSize); tab.setCustomView(tv); } }
- 在監(jiān)聽器中設(shè)置樣式
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { String tabStr = Objects.requireNonNull(tab.getText()).toString(); if(onSelectedListener!=null){ onSelectedListener.onSelected(tabStr); } if(enableChangeSize){ TextView tv = (TextView) tab.getCustomView(); assert tv != null; tv.setTextSize(selectSize); } } @Override public void onTabUnselected(TabLayout.Tab tab) { if(enableChangeSize){ TextView tv = (TextView) tab.getCustomView(); assert tv != null; tv.setTextSize(unSelectSize); } } @Override public void onTabReselected(TabLayout.Tab tab) { } });
在選中時或未選中時,獲取已設(shè)置的TextView,然后可以去設(shè)置需要的大小、加粗等變化。文章來源:http://www.zghlxwxcb.cn/news/detail-531448.html
-
我做了一個簡單的封裝,這里分享一下。文章來源地址http://www.zghlxwxcb.cn/news/detail-531448.html
public class TabLayoutUtil { private final TabLayout tabLayout; private boolean enableChangeSize = false; private int unSelectSize = 15,selectSize = 16; private TabLayoutUtil(TabLayout tabLayout) { this.tabLayout = tabLayout; } public static TabLayoutUtil build(TabLayout tabLayout){ return new TabLayoutUtil(tabLayout); } public TabLayoutUtil enableChangeStyle() { this.enableChangeSize = true; ColorStateList colorStateList = tabLayout.getTabTextColors(); for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); assert tab != null; String tabStr = Objects.requireNonNull(tab.getText()).toString(); if(tab.getCustomView() == null || !(tab.getCustomView() instanceof TextView)){ TextView tv = new TextView(tabLayout.getContext()); //使用默認TabItem樣式時,需要添加LayoutParams,否則會出現(xiàn)Tab文字不居中問題 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(-2,-2); tv.setLayoutParams(params); tv.setTextColor(colorStateList); tv.setText(tabStr); tv.setTextSize(tab.isSelected()?selectSize:unSelectSize); tab.setCustomView(tv); } } return this; } public TabLayoutUtil setTextSizes(int selectSize,int unSelectSize) { this.selectSize = selectSize; this.unSelectSize = unSelectSize; return this; } public TabLayoutUtil setOnSelectedListener(OnSelectedListener onSelectedListener) { tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { String tabStr = Objects.requireNonNull(tab.getText()).toString(); if(onSelectedListener!=null){ onSelectedListener.onSelected(tabStr); } if(enableChangeSize){ TextView tv = (TextView) tab.getCustomView(); assert tv != null; tv.setTextSize(selectSize); } } @Override public void onTabUnselected(TabLayout.Tab tab) { if(enableChangeSize){ TextView tv = (TextView) tab.getCustomView(); assert tv != null; tv.setTextSize(unSelectSize); } } @Override public void onTabReselected(TabLayout.Tab tab) { } }); return this; } public interface OnSelectedListener{ void onSelected(String tabStr); } }
到了這里,關(guān)于Android 設(shè)置TabLayout選中后的字體、大小、顏色等設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!