TabLayout

xml属性

设置内间距
  • tabPadding:设置四边的内间距;
  • tabPaddingStart:设置左边的内间距;
  • tabPaddingTop:设置上边的内间距;
  • tabPaddingEnd:设置右边的内间距;
  • tabPaddingBottom:设置底边的内间距;

注意:设置了与左右相关的padding后,会使指示器的长度也跟着tab标签的宽度发生变化。

设置文字相关
  • tabTextColor:tab标签的初始颜色,默认值是colors.xml中的colorAccent值;
  • tabSelectedTextColor:tab标签被选中后的颜色;
  • tabTextAppearance:tab标签的文字样式,相当于一个style样式。但是在这个style中设置的textColor属性会被tabTextColor属性覆盖,如果没有设置tabTextColor属性,才会显示这个style中设置的textColor属性;也就是tab标签的文字颜色是:tabTextColor>textColor>colorAccent(默认值);
//设置tabTextAppearance属性;
app:tabTextAppearance="@style/tab_style"

<style name="tab_style">
    <item name="android:textAllCaps">false</item>
    <item name="android:textSize">24sp</item>
    <item name="android:textColor">#FFFF00</item>
</style>
设置指示器
  • tabIndicator:
  • tabIndicatorHeight:设置指示器高度;
  • tabIndicatorColor:设置指示器颜色;
  • tabIndicatorGravity:设置指示器垂直的位置,可取值为top(位于文本头部)、center(位于文本中间,类似于删除线效果)、bottom(位于文本底部,常用这种效果)、stretch(扩展效果,就是相当于给文本大小范围添加了背景色),默认取值bottom;
  • tabIndicatorFullWidth:设置指示器是否和tab标签的宽度一样长,可取值为false、true,默认值是true。设置为false,指示器的长度就是tab文本的宽度;(安卓28开始支持的属性)
  • tabIndicatorAnimationDuration:设置指示器滑动到所选择的tab标签位置所需的时间,个人建议不需要来设置这个属性;
  • tabIconTint:

  • tabMode:设置tab标签显示模式,是否水平滑动或者充满,可取值有fixed、scrollable,默认值是fixed。如果,要显示多个tab标签,可能会因为一个页面宽度放不下,而出现拥挤在一起显示不全的效果,需要设置为scrollable。

  • tabGravity:设置tab标签水平的位置,可取值有center、fill,默认值是center。

  • tabBackground:设置tab标签的背景色,这里不能直接写RGB,需要是@color/xxx这样的格式;

  • tabContentStart:设置TabLayout整体的左边的margin;

  • :

  • :

  • :

注意事项:

  • 设置几个item均匀放置在页面中:
      要实现这个效果,不可以设置app:tabGravity="center"或app:tabMode="scrollable",只要这两个属性任意一个被设置了,就不会实现均匀占据页面的宽度。注意,当app:tabMode="scrollable"时,app:tabGravity=""不管取什么值都不会生效。
  • 实现分割线:
      因为TabLayout继承自HorizontalScrollView,而HorizontalScrollView嵌套了一个LinearLayout,所以可以使用这个LinearLayout来设置分割线,以此实现TabLayout的分割线。
LinearLayout linearLayout = (LinearLayout) mTablayoutActivityTl.getChildAt(0);
linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
linearLayout.setDividerPadding(40);
linearLayout.setDividerDrawable(ContextCompat.getDrawable(this,R.drawable.divider_vertical));
//R.drawable.divider_vertical文件;
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#CCCCCC"/>
    <size android:width="1dp"/>
</shape>