Android Material Design 系列之 TabLayout + ViewPager + Fragment 使用详解

前言

本文是 Material Design 系列第三篇:TabLayout + ViewPager + Fragment 基本使用,Material Design 所有控件属于高级 UI,所以 Material Design 控件是中高级工程师必备技能。现在市面上很多主流界面效果都是采用 Material Design 风格控件完成。希望博主 Material Design 系列文章对各位初学者有所帮助,也为自己学习做详细笔记。

一、TabLayout 方法介绍

方法 介绍
addTab(TabLayout.Tab tab) 向此布局添加选项卡
addView(View child) 添加子视图
clearOnTabSelectedListeners() 删除所有以前添加的 TabLayout.OnTabSelectedListeners
addOnTabSelectedListener(TabLayout.OnTabSelectedListener listener) 添加加一个TabLayout.OnTabSelectedListener 监听事件,当 tab 选择更改时,它将被调用
TabLayout.Tab newTab() 创建并返回一个新的 TabLayout.Tab
removeAllTabs() 从操作栏中删除所有选项卡,并取消选择当前选项卡
removeOnTabSelectedListener(TabLayout.OnTabSelectedListener listener) 删除以前通过 addOnTabSelectedListener(OnTabSelectedListener)添加的给定
TabLayout.OnTabSelectedListener,tab 选中监听器
removeTab(TabLayout.Tab tab) 从布局中删除选项卡
removeTabAt(int position) 从布局中删除选项卡
setupWithViewPager(ViewPager viewPager) 将 TabLayout 与 ViewPager 链接在一起
setScrollPosition(int position,float positionOffset,boolean updateSelectedText) 设置选项卡的滚动位置,当标签 tab 显示为滚动容器(如 ViewPager)的一部分时,此功能非常有用
setSelectedTabIndicatorColor(int color) 设置选中的 tab 的指示器(下划线)颜色
setSelectedTabIndicatorHeight(int height) 设置选中的 tab 的指示器的高度
setTabGravity(int gravity) 设置 TabLayout 的布局方式,GRAVITY_CENTER (内容中心显示) 和 GRAVITY_FILL (内容尽可能充满 TabLayout)
setTabMode(int mode) 设置 tab 选项卡的行为模式,MODE_FIXED* (固定的 tab)和 MODE_SCROLLABLE(滑动的 tab)
setTabTextColors(int normalColor,int selectedColor) 设置用于选项卡的不同状态(常规,选定)的文字颜色
setupWithViewPager(ViewPager viewPager,boolean autoRefresh) 将 TabLayout 与 ViewPager 链接在一起,当更改 PagerAdapter 时,TabLayout 是否更新由 autoRefresh 决定
shouldDelayChildPressedState() 如果此 ViewGroup 的子代或子孙后代按下的状态应该被延迟,则返回 true。 一般来说,应该对可以滚动的容器(如 List)进行此操作。

二、TabLayout 基础使用

TabLayout 的出现,给开发者带来很多便利,99%的 APP 都会有 Tab 栏+ViewPager+Fragment 的基础功能,这好比一个 APP 的魂,所以 TabLayout 很好的诠释了 Google 对开发者越来越友好,操作系统性能不断优化提升,开发者 API 和控件也在不断优化。

文章中效果图界面放在 TabLayout 出生之前,大多数人可能会采用 RadioButton+ViewPager 的方法实现,这也是当时比较主流的实现方式,可能还有使用 HorizontalScrollView+ViewPager 的方式等等…

TabLayout 出现后这种效果实现起来更加便捷,代码耦合度降低,维护成本低。

1、基础使用

  1. 只需要在 XML 中定义 TabLayout 即可:
<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
  1. 在 Activity 中设置相关属性:
// 设置TAB滚动显示
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
// 添加TAB标签
for (String mTitle : mTitles) {
   
    tabLayout.addTab(tabLayout.newTab().setText(mTitle));
}

上面这些是最常用,也是最基础的属性,开发中基本都会用到,这才刚刚设置完 TabLayout 栏,只需要几行代码就可以轻松完成,可以拿你以前的代码比较一下。通过以上 2 步就可以达到如下效果:

2、设置 TabLayout 水平滚动

TabLayout 如果 Tab 比较多,类似新闻客户端,需要将 Tablayout 设置水平滚动,否则就会出现 Tab 空白的现象。

使用 setTabMode(int mode)方法

  • 参数:mode 有 2 个值,MODE_SCROLLABLE 和 MODE_FIXED,系统默认不滚动 MODE_FIXED,如果需要设置水平滑动,mode 设置为 MODE_SCROLLABLE 即可。

3、设置字体选中颜色

使用 setTabTextColors(int normalColor, int selectedColor)方法

  • 参数 1:设置 Tab 字体未选中颜色
  • 参数 2:设置 Tab 字体选中颜色
tabLayout.setTabTextColors(getResources().getColor(R.color.colorBlack, null),
        getResources
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值