Android TabLayout标题

QuibblerQuibbler 2020-02-28 约 11 分钟 1949 次阅读

Android TabLayout标题

Tab标题也是Android应用中常见的UI,比如今日头条新闻页面上的切换Tab。Tab切换控制通常是个ViewPager一起使用,通过点击Tab页面不同的标签,控制ViewPager显示不同的页面。

1、PagerTabStrip(不推荐)

结合PagerTabStrip,可以添加标题,只需要在ViewPager布局内嵌套PagerTabStrip即可,不需要设置任何方法,标题会从ViewPager中获取并设置。

<androidx.viewpager.widget.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
        <androidx.viewpager.widget.PagerTabStrip
            android:id="@+id/tab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
            
    </androidx.viewpager.widget.ViewPager>

PagerTabStrip还有一个姊妹控件PagerTitleStrip。这两者年代较久,现在用的少,不建议使用。

2、TabLayout

TabLayout继承自HorizontalScrollView,难怪可以水平滚动。比前面的PagerTabStrip更强大,是现在主流Tab标签实现方式。

public class TabLayout extends HorizontalScrollView {
        ... 
    }

2.1、引入TabLayout

有些可能没有TabLayout,需要在build.gradle加入依赖:

//废弃
    implementation 'com.android.support:design:28.0.0'

推荐用新库:

//推荐
    implementation 'com.google.android.material:material:1.2.1'

2.2、TabLayout属性

一些属性,可以方便的在布局中设置(也可以在代码中设置):

tabTextColor:Tab未被选中时的文字颜色

tabSelectedTextColor:选中项中的字体颜色

tabBackground:设置Tab背景

tabIndicatorColor:设置指示器的颜色

tabIndicatorHeight:设置指示器的高度

 tabTextAppearance:设置style改变字体属性

tabMode:设置Tablayout的布局模式

                         fixed:固定的,不能滑动,很多标签的时候会被挤压(默认是fixed)


                         scrollable:可以滑动的

                         auto:TabLayout自动选择

 tabGravity:设置TabLayout的布局方式,有两个值。只有当tabMode为fixed时才有效

                         fill:充满(默认)


                         center:居中


tabMaxWidth:设置tab项最大的宽度

  tabMinWidth:设置tab项最小的宽度

 tabContentStart:设置TabLayout开始位置的偏移量

  paddingStart,paddingEnd:设置整个TabLayout的内边距

tabPadding,tabPaddingStart,tabPaddingEnd,tabPaddingTop,tabPaddingBottom:设置tab项的内边距

style:设置样式

tabIconTint:设置文字上面图标的颜色

tabIconTintMode:文字上的图标和文字上图标区域的颜色之间的图像混合模式

取值:src_atop、src_over、add、screen、src_in、multiply

含义:如图

tabIndicatorFullWidth:指示器是否沾满整个宽度(默认为true)

tabIndicatorGravity:设置指示器的方位(默认指示器在下方)

取值:top指示器在上方、bottom指示器在下方、center指示器在中间、stretch指示器整个布局

tabIndicatorAnimationDuration:设置指示器动画时间

tabInlineLabel:设置图标和文件的方向(默认为false)

tabRippleColor:设置水波纹的颜色

tabUnboundedRipple:设置水波纹是否有边界(默认有边界)

2.3、使用TabLayout

先在布局中添加TabLayout:

<com.google.android.material.tabs.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabSelectedTextColor="@color/colorAccent"
        app:tabTextColor="@color/colorPrimaryDark" />

addTab():在代码中添加Tab按钮,设置文字,图标等属性。

mTabLayout.addTab(mTabLayout.newTab().setText("我的").setIcon(R.drawable.icon));
    ...

2.4、TabLayout设置监听

TabLayout设置Tab页选中监听器

mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                
            }
            
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
            
            }
            
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                //再次点击之前一个标签,这是onTabReselected回调被触发。
            }
        });

2.5、ViewPager+TabLayout

在布局中添加,需在代码中给TabLayout关联ViewPager。

mTabLayout.setupWithViewPager(viewPager);

注意setUpWithViewPager()方法会创建ViewPager页面数量一致的Tab按钮,并设置一些属性。不必再单独给TabLayout添加addTab():

mTabLayout.setupWithViewPager(mViewPager);
    mTabLayout.getTabAt(0).setText("我的").setIcon(R.drawable.layout_1);
    mTabLayout.getTabAt(1).setText("发现").setIcon(R.drawable.layout_2);
    ...

参考:

         TabLayout-标签布局

         Android TabLayout

         PagerTabStrip与PagerTitleStrip添加标题栏

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w