简介
所在包:android.support.design.widget
继承类:android.widget.HorizontalScrollView
背景:北京时间2015.5.29谷歌I/O开发者大会,带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。最重要的是,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2。这不得不说是一个良心之作。
Android源码中TabLayout类说明:TabLayout提供了显示选项卡的水平布局。
使用
1.加入引用
implementation 'com.android.support:design:28.0.0'
2.在布局文件中添加
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="1dp"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabTextColor="@color/colorAccent" />
3.初始化
/**
* 初始化选项内容
*/
private void init() {
tabLayout.addTab(tabLayout.newTab().setText(s).setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText(s));
tabLayout.addTab(tabLayout.newTab().setText(s));
tabLayout.addTab(tabLayout.newTab().setText(s));
}
初始化的图片:
4.点击事件
tabLayout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//点击当前位置
Log.i(TAG, "onTabSelected: " + tab.toString());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
//重新点击当前位置
}
});
TabLayout.Tab 内部并没有实现toString(),所以想看返回什么参数,可以通过断点 ~
如图可以看到我们点击的位置和标题。
扩展属性
1.修改颜色
//设置字体默认颜色
app:tabTextColor="@color/colorAccent"
//设置字体选择后的颜色
app:tabSelectedTextColor="@color/colorPrimary"
//设置指示器的颜色
app:tabIndicatorColor="#000000"
//设置Tab背景颜色
app:tabBackground="#000000"
2.修改指示器
//设置指示器颜色 在上面
//设置指示器高度
app:tabIndicatorHeight="2dp"
//设置指示器隐藏
app:tabIndicatorHeight="0dp"
3.Tab滚动方式
//可滚动
app:tabMode="scrollable"
//固定
app:tabMode="fixed"
4.Tab布局方式
//内容中心显示
app:tabGravity="GRAVITY_CENTER"
//内容尽可能充满TabLayout
app:tabGravity="GRAVITY_FILL"
扩展方法
1.返回当前所选标签的位置
getSelectedTabPosition
2.返回指定位置的tab
getTabAt(int index)
3.设置选项卡的滚动位置
setScrollPosition(int position,float positionOffset,boolean updateSelectedText)
当标签tab显示为滚动容器(如ViewPager)的一部分时,此功能非常有用。
参数:
位置int:当前滚动位置
positionOffset float:表示从位置偏移的[0, 1)的值。
updateSelectedText boolean:是否更新文本的选择状态
4.将TabLayout与ViewPager链接在一起
setupWithViewPager(ViewPager viewPager)
5.将TabLayout与ViewPager链接在一起,
当更改PagerAdapter时,TabLayout是否更新由autoRefresh决定
setupWithViewPager(ViewPager viewPager,boolean autoRefresh)
参考文章
TabLayout使用介绍:https://blog.csdn.net/tzhenxiong/article/details/86258459
TabLayout的属性介绍:https://www.jianshu.com/p/23863e4bbea1
Android:使用TabLayout详解:https://www.cnblogs.com/lyd447113735/p/8693931.html