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>