TabLayout使用详解

本文详细介绍了Android中TabLayout的使用,包括基本配置、属性调整、与ViewPager结合使用、自定义视图以及如何改变指示器长度。通过实例展示了如何创建带有图片和文字的标签,以及如何在文字大写的情况下正确显示ImageSpan。
摘要由CSDN通过智能技术生成

TabLayout 标签布局

谷歌在Material Design中推出TabLayout以替代开源库PagerSlidingTabStrip和ViewPagerIndicator的使用。事实上,这类indicator指示器的布局可谓是Android中最常见的布局设计了,TabLayout的出现给我们带来一定便利,它的使用对开发者更加友好,并且和Toolbar一样,配合material design的其他控件使用能轻易创造出酷炫的效果。

关联点

主要讲下继承,默认样式,api等等

继承

从继承关系我们可以看到TabLayout直接继承HorizontalScrollView,所以TabLayout只支持横向的滚动

默认样式

app:theme=”@style/Widget.Design.TabLayout”

从系统定义的该样式继续深入:
 <style name="Widget.Design.TabLayout" parent="Base.Widget.Design.TabLayout">
  <item name="tabGravity">fill</item>
  <item name="tabMode">fixed</item>
 </style>
 <style name="Base.Widget.Design.TabLayout" parent="android:Widget">
  <item name="tabMaxWidth">264dp</item>
  <item name="tabIndicatorColor">?attr/colorAccent</item>
  <item name="tabIndicatorHeight">2dp</item>
  <item name="tabPaddingStart">12dp</item>
  <item name="tabPaddingEnd">12dp</item>
  <item name="tabBackground">?attr/selectableItemBackground</item>
  <item name="tabTextAppearance">@style/TextAppearance.Design.Tab</item>
  <item name="tabSelectedTextColor">?android:textColorPrimary</item>
 </style>
接着,看看系统定义Tab文本的样式(注意textAllcaps这个属性):   
 <style name="TextAppearance.Design.Tab" parent="TextAppearance.AppCompat.Button">
  <item name="android:textSize">14dp</item>
  <item name="android:textColor">?android:textColorSecondary</item>
  <item name="textAllCaps">true</item>
 </style>

>
从系统定义TabLayout的默认样式可以看出,我们可以改变TabLayout对应的系统样式的属性值来适配我们自己的需求.

属性及api

app:tabMinWidth             Tab的最小宽度
app:tabMaxWidth             Tab的最大宽度
app:tabMode                 Tab模式,默认是fixed:固定的,标签很多时候会被挤压,不能滑动
app:tabGravity              "center"//居中,如果是"fill",则是填充满
app:tabContentStart         TabLayout左边位置的偏移量
app:tabPadding              Tab内部的子控件的Padding
app:tabPaddingStart         左
app:tabPaddingEnd           右
app:tabPaddingTop           上
app:tabPaddingBottom        下
app:paddingStart            整个TabLayout的左Padding
app:paddingEnd              整个TabLayout的右Padding
app:tabTextColor            Tab未被选中字体的颜色
app:tabTextAppearance       Tab中文字的样式
app:tabSelectedTextColor    Tab被选中字体的颜色
app:tabIndicatorColor       Tab指示器下标的颜色
app:tabIndicatorHeight      Tab指示器下标的高度

addTab(TabLayout.Tab tab, int position, boolean setSelected) 增加选项卡到 layout 中 
addTab(TabLayout.Tab tab, boolean setSelected)               同上 
addTab(TabLayout.Tab tab)                                    同上 
getTabAt(int index)                                          获到选项卡 
getTabCount()                                                获到选项卡的总个数 
getTabGravity()                                              获到tab的 Gravity 
getTabMode()                                                 获到tab的模式 
getTabTextColors()                                           获到tab中文本的颜色 
newTab()                                                     新建个tab 
removeAllTabs()                                              移除所有的tab 
removeTab(TabLayout.Tab tab)                                 移除指定的tab 
removeTabAt(int position)                                    移除指定位置的tab 
setCustomView(View )
setOnTabSelectedListener(TabLayout.OnTabSelectedListener onTabSelectedListener)     为每个 tab 增加选择监听器 
setScrollPosition(int position, float positionOffset, boolean updateSelectedText)   设置滚动位置 
setTabGravity(int gravity)                                   设置 Gravity 
setTabMode(int mode) 设置 Mode,有两种值:TabLayout.MODE_SCROLLABLE和TabLayout.MODE_FIXED分别表示当tab的内容超过屏幕宽度是否支持横向水平滑动,第一种支持滑动,第二种不支持,默认不支持水平滑动。 
setTabTextColors(ColorStateList textColor)                   设置tab中文本的颜色 
setTabTextColors(int normalColo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值