版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Common_it/article/details/80495409
使用TabLayout可以将大量关联的数据或者选项划分成更易理解的分组,有效的进行内容导航和内容组织。
效果
布局文件
<android.support.design.widget.TabLayout
android:id="@+id/tl_mian_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:tabBackground="@color/colorWhite"
app:tabContentStart="10dp"
app:tabGravity="center"
app:tabIndicatorColor="#ff0000"
app:tabIndicatorHeight="2dp"
app:tabMode="scrollable"
app:tabSelectedTextColor="#ff0000"
app:tabTextAppearance="@style/TabTextStyle"
app:tabTextColor="#00ff00" />
添加数据
第一种方式(在java文件中)
//添加Tab数据
tl_mian.addTab(tl_mian.newTab().setText("推荐"));
第二种方式(在xml中添加)
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
app:tabMode="fixed"
app:tabGravity="center"
android:layout_height="40dp">
<android.support.design.widget.TabItem
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="系统" />
<android.support.design.widget.TabItem
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="消息" />
<android.support.design.widget.TabItem
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="客服" />
</android.support.design.widget.TabLayout>
监听
//添加Tab选择监听
tl_mian.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//当前选中Item
Log.i(TAG, "onTabSelected: " + tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
//上一个选中的Item
Log.i(TAG, "onTabUnselected: " + tab.getPosition());
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
//重复选择同一个Item
Log.i(TAG, "onTabReselected: " + tab.getPosition());
}
});
自定义属性说明
自定义属性 | 说明 | 参数 |
---|---|---|
tabBackground | TabLayout背景颜色 | color资源文件 |
tabContentStart | TabLayout内容距离开始位置的距离 | 尺寸值 |
tabGravity | TabLayou重力方式 | center:居中显示 fill:填充 |
tabIndicatorColor | TabLayout指示器的颜色 | 颜色值 |
tabIndicatorHeight | TabLayout指示器的高度 | 尺寸值 |
tabMode | TabLayout显示模式 | scrollable:滑动显示 fixed:固定宽度显示 |
tabSelectedTextColor | TabLayout选中时候文字的颜色 | 颜色值 |
tabTextColor | TabLayout默认时候文字的颜色 | 颜色值 |
tabTextAppearance | TabLayout文字样式 | style资源文件 |
tabPadding | TabLayout内边距 | 尺寸值 |
常用的方法
newTab
获取一个Tab对象,用来包装Item属性;addTab
添加一个Tab到TabLayout中(也就是一个Item);addOnTabSelectedListener
TabLayout选择监听;setScrollPosition
选中某个位置的ItemsetupWithViewPager
设置和ViewPage关联,详细请移步Material Design之TabLayout(二)
注意
- 设置
tabGravity
属性的前提是tabMode
的属性必须为fixed
; - 如果设置了
tabTextColor
的属性,在设置tabTextAppearance
可以不包含颜色属性,但是没有设置tabTextColor
的话,tabTextAppearance
里必须包含颜色属性; - 使用的时候记得导包正确
android.support.design.widget.TabLayout
; - 在设置
tabContentStart
属性的时候如果看不到效果,把值加大一点在试一试,原因是在源码中paddingStart = Math.max(0, mContentInsetStart - mTabPaddingStart);
有这样一句话,如果你设置的值小于TabPadding
,就取0;