欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android TabLayout切换时,改变选中状态下字体大小颜色

程序员文章站 2022-06-01 09:17:12
...

需求:TabLayout和ViewPager实现左右切换联动,选中状态下字体变大,黑色  非选中状态下小字

先看一段腾讯视频效果图:

Android TabLayout切换时,改变选中状态下字体大小颜色

 

思路:

TabLayout没有什么属性可供满足需求,所以只能想办法给选中tab定制TextView,再根据监听TabLayout的选中状态设置该TextView的显示样式。

 

1.注解 BindView
@BindView(R.id.toolbar_tab)
TabLayout toolbarTab;
@BindView(R.id.view_pager)
ViewPager viewPager;

 

2. TabLayout + viewPager

 

if(!isAdded()){
    return;
}
adapter = new TabPagerAdapter(getChildFragmentManager(),tabList);  //tabList,自己的数据
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1);
viewPager.setOffscreenPageLimit(3);
toolbarTab.setupWithViewPager(viewPager);
for (int i = 0; i < toolbarTab.getTabCount(); i++) {
    TabLayout.Tab tab = toolbarTab.getTabAt(i);
    if (tab != null) {
        tab.setCustomView(getTabView(i));           
    }
}
toolbarTab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        //在这里可以设置选中状态下  tab字体显示样式
        viewPager.setCurrentItem(tab.getPosition());
        View view = tab.getCustomView();
        if (null != view && view instanceof TextView) {
            ((TextView) view).setTextSize(19);
            ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.home_tab_selected));
        }
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
        View view = tab.getCustomView();
        if (null != view && view instanceof TextView) {
            ((TextView) view).setTextSize(14);
            ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.home_tab_noselected));
        }
    }

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

    }
});

 
 
/**
 * 自定义Tab的View
 * @param currentPosition
 * @return
 */
private View getTabView(int currentPosition) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.layout_tab, null);
    TextView textView = (TextView) view.findViewById(R.id.tab_item_textview);
    textView.setText(categoryList.get(currentPosition).getName());
    return view;
}

layout_tab.xml文件也很简单  只有一个textView

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tab_item_textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:typeface="sans"
    >
</TextView>

 

 

代码不多,主要是实现思路,想好怎么做了 实现起来还是蛮简单的。大家要是有更好的方法可以多给一些jian

 

 

 

 

 

 

相关标签: TabLayout ViewPager