切记,一定要先绑定viewpage再添加tab,否则tab的标题无法正常显示出来。setupwithviewpager会在后台做很多事,比如清空tabs等,为了更安全的显示我们的tabs,在绑定viewpager之后,先清空一下tabs再添加

先看样例,有图有真相

TabLayout+ViewPager制作简单导航栏_TabLayout

绑定viewpager

此处主要说明tablayout的使用方法,viewpager绑定fragment的介绍在其他文章说明

mBinding.tabsLayout.setupWithViewPager(mBinding.vpTabs);
常见问题
  • 切记,一定要先绑定viewpage再添加tab,否则tab的标题无法正常显示出来

  • setupwithviewpager会在后台做很多事,比如清空tabs等,为了更安全的显示我们的tabs,在绑定viewpager之后,先清空一下tabs再添加

    mBinding.tabsLayout.removeAllTabs();

添加 tab

mBinding.tabsLayout.addTab(mBinding.tabsLayout.newTab().setText("所有书籍"));
mBinding.tabsLayout.addTab(mBinding.tabsLayout.newTab().setText("发现"));

或者使用

private String[] lstTitles = new String[]{"所有书籍", "发现"};
for(int i = 0; i < lstTitles.length; i++){
    mBinding.tabsLayout.addTab(mBinding.tabsLayout.newTab());
    mBinding.tabsLayout.getTabAt(i).setText(lstTitles[i]);
}

常用属性设定

设定文本颜色
app:tabTextColor="@color/tab_text" //设定标题文本颜色
app:tabSelectedTextColor="@color/tab_text" //设定标题文本选中后颜色

上面只需要设置tabtextcolor即可,具体选中后的颜色可以在颜色属性里设置

在 res/drawable/目录下添加 tab_text 选择器控制默认和选中后的字体颜色


取消滚动指示线
app:tabIndicatorHeight="0dp"
设定标签文字样式

没有属性可以直接设定文字大小,但可以通过样式来设定
自定义一个 style 样式

    22sp" _ue_custom_node_="true">
app:tabTextAppearance="@style/tabTextAppearance"