TabLayout 使用详解(修改文字大小、下划线样式等)

简介: TabLayout 使用详解(修改文字大小、下划线样式等)

效果:

image.png


官网是这样介绍的:


TabLayout provides a horizontal layout to display tabs. (水平方向的选项卡)


依赖:

implementation 'com.google.android.material:material:1.2.1'


代码方式:

TabLayout tabLayout = ...;
 tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
 tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
 tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));

XML方式:

<android.support.design.widget.TabLayout
         android:layout_height="wrap_content"
         android:layout_width="match_parent">
     <android.support.design.widget.TabItem
             android:text="@string/tab_text"/>
     <android.support.design.widget.TabItem
             android:icon="@drawable/ic_android"/>
 </android.support.design.widget.TabLayout>


关联ViewPager:

<android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        app:tabIndicatorColor="@color/red"
        app:tabMode="fixed"
        app:tabSelectedTextColor="@color/black"
        app:tabTextColor="@color/gray"/>
    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

Java代码:


mTabLayout = (TabLayout) findViewById(R.id.tab_layout);
        mViewPager = (ViewPager) findViewById(R.id.view_pager);
//设置adapter
        mViewPager.setAdapter(new SimpleFragmentPagerAdapter(getSupportFragmentManager()));
        //关联viewpager
        mTabLayout.setupWithViewPager(mViewPager);
private class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
        private String tabTitles[] = new String[]{"tab1", "tab2", "tab3"};
        private Fragment[] mFragment = new Fragment[]{new Fragment1(), new Fragment2(), new Fragment3()};
        private SimpleFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public Fragment getItem(int position) {
            return mFragment[position];
        }
        @Override
        public int getCount() {
            return mFragment.length;
        }
        @Override
        public CharSequence getPageTitle(int position) {
            return tabTitles[position];
        }
    }

这样基本能实现大部分需求了



常用属性:

app:tabIndicatorColor="@color/red" 指示器的颜色

app:tabIndicatorHeight 指示器的高度,去掉指示器的话直接设置0dp

app:tabMode="fixed" 显示的模式,fixed表示平分显示,scrollable滑动显示

app:tabSelectedTextColor="@color/black" 选中文字颜色

app:tabTextColor="@color/gray" 未选中文字颜色

app:tabMinWidth="50dp" 最小宽度,可以控制tab的宽度,包括指示器的宽度

app:tabMaxWidth="100dp" 最大宽度


所有属性:

image.png

高级用法:


设置图标

mTabLayout.getTabAt(0).setIcon(R.mipmap.ic_launcher);

添加监听

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) {
                //再次选中
            }
        });

默认选中或指定选中

mTabLayout.getTabAt(position).select();

关联ViewPager的话选中Viewpager也是一样的


mViewPager.setCurrentItem(position);

文字大小、样式

app:tabTextAppearance="@style/MyTabLayout"
<!--TabLayout字体大小-->
    <style name="MyTabLayout">
        <item name="android:textSize">20sp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textAllCaps">false</item>
    </style>

textAllCaps 设置大小写

下划线宽度等同文字

app:tabIndicatorFullWidth="false"

下划线样式

app:tabIndicator="@drawable/shape_tab_indicator"
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:width="15dp"
        android:height="5dp"
        android:gravity="center">
        <shape>
            <corners android:radius="5dp" />
            <!--color无效,源码用tabIndicatorColor-->
            <solid android:color="@color/colorPrimary" />
        </shape>
    </item>
</layer-list>
宽度、高度、圆角等


Github:

https://github.com/yechaoa/MaterialDesign


 

目录
相关文章
|
6月前
自定义tablayout中的tab样式
自定义tablayout中的tab样式
27 0
|
2月前
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
218 3
|
Android开发
Android 修改EditView输入框的光标颜色、下划线颜色
Android 修改EditView输入框的光标颜色、下划线颜色
649 0
Android 修改EditView输入框的光标颜色、下划线颜色
从源码角度来理解TabLayout设置下划线宽度问题
从源码角度来理解TabLayout设置下划线宽度问题
100 0
从源码角度来理解TabLayout设置下划线宽度问题
|
程序员 API iOS开发
iOS开发:字符串设置指定内容的文字颜色、文字大小、文字字体类型
在iOS开发过程中,会有一些为了提高APP的视觉效果而设置的特别一点的效果,比如一行文字需要自定义不同的颜色和文字大小,这就用到通过富文本来设置字符串的颜色、大小和文字类型。这篇博文我打算只介绍怎么设置指定内容的一些文字属性设置,如果之前看过我写的博文,就会发现有一篇类似介绍通过富文本来设置字符串内容的博文,但是那篇是综合性的,包括介绍button的,以及UItextfield的设置,所以在这里我只介绍怎么设置字符串指定位置的一些自定义设置的方法,如有不妥之处,欢迎指正。
602 0
|
XML Android开发 数据格式
Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色
Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色
902 0
Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色
SwiftUI—使用Divider分隔线对视图进行分隔
SwiftUI—使用Divider分隔线对视图进行分隔
1180 0
SwiftUI—使用Divider分隔线对视图进行分隔
|
前端开发 Android开发 容器
Android自定义Tablayout下划线指示器Indicator:设置宽高、圆角、渐变颜色
Android自定义Tablayout下划线指示器Indicator:设置宽高、圆角、渐变颜色 Android原生的Tablayout下面有一个指示器(指示线、下划线),如图所示:详情见附录1。
6189 0
TextView(设置字体)
(创建于2016/12/20) 1,自定义一个TextView public class CustomTextView extends TextView { public CustomTextView(Context context) { ...
788 0