每天记录学习的新知识 : TabLayout的简单运用

简介

所在包: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));
    }

初始化的图片:
每天记录学习的新知识 : TabLayout的简单运用
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(),所以想看返回什么参数,可以通过断点 ~
每天记录学习的新知识 : TabLayout的简单运用
如图可以看到我们点击的位置和标题。

扩展属性

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

上一篇:官方TabLayout下划线跟随字体长度变化(SDK 28以上)


下一篇:TvTabLayout 针对 Android Tv 端把原生的 tablayout 进行适配和改造