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

举报
yechaoa 发表于 2022/05/31 00:49:10 2022/05/31
【摘要】 目录 效果: 依赖: 代码方式: XML方式: 关联ViewPager: 常用属性: 所有属性: 高级用法: 设置图标 添加监听 默认选中或指定选中 文字样式 下划线宽度等同文字 下划线样式   Github: 效果: 官网是这样介绍的: TabLayout provides ...

目录

效果:

依赖:

代码方式:

XML方式:

关联ViewPager:

常用属性:

所有属性:

高级用法:

设置图标

添加监听

默认选中或指定选中

文字样式

下划线宽度等同文字

下划线样式

 

Github:


效果:

官网是这样介绍的:

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

依赖:

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

 

代码方式:


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

XML方式:


  
  1. <android.support.design.widget.TabLayout
  2. android:layout_height="wrap_content"
  3. android:layout_width="match_parent">
  4. <android.support.design.widget.TabItem
  5. android:text="@string/tab_text"/>
  6. <android.support.design.widget.TabItem
  7. android:icon="@drawable/ic_android"/>
  8. </android.support.design.widget.TabLayout>


关联ViewPager:


  
  1. <android.support.design.widget.TabLayout
  2. android:id="@+id/tab_layout"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:background="@color/white"
  6. app:tabIndicatorColor="@color/red"
  7. app:tabMode="fixed"
  8. app:tabSelectedTextColor="@color/black"
  9. app:tabTextColor="@color/gray"/>
  10. <android.support.v4.view.ViewPager
  11. android:id="@+id/view_pager"
  12. android:layout_width="match_parent"
  13. android:layout_height="wrap_content"/>

Java代码:


  
  1. mTabLayout = (TabLayout) findViewById(R.id.tab_layout);
  2. mViewPager = (ViewPager) findViewById(R.id.view_pager);

  
  1. //设置adapter
  2. mViewPager.setAdapter(new SimpleFragmentPagerAdapter(getSupportFragmentManager()));
  3. //关联viewpager
  4. mTabLayout.setupWithViewPager(mViewPager);

  
  1. private class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
  2. private String tabTitles[] = new String[]{"tab1", "tab2", "tab3"};
  3. private Fragment[] mFragment = new Fragment[]{new Fragment1(), new Fragment2(), new Fragment3()};
  4. private SimpleFragmentPagerAdapter(FragmentManager fm) {
  5. super(fm);
  6. }
  7. @Override
  8. public Fragment getItem(int position) {
  9. return mFragment[position];
  10. }
  11. @Override
  12. public int getCount() {
  13. return mFragment.length;
  14. }
  15. @Override
  16. public CharSequence getPageTitle(int position) {
  17. return tabTitles[position];
  18. }
  19. }

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

 

常用属性:

  • 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" 最大宽度

 

所有属性:

 

高级用法:

 

设置图标

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

添加监听


  
  1. mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
  2. @Override
  3. public void onTabSelected(TabLayout.Tab tab) {
  4. //选中
  5. }
  6. @Override
  7. public void onTabUnselected(TabLayout.Tab tab) {
  8. //未选中
  9. }
  10. @Override
  11. public void onTabReselected(TabLayout.Tab tab) {
  12. //再次选中
  13. }
  14. });


默认选中或指定选中

mTabLayout.getTabAt(position).select();
 


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

mViewPager.setCurrentItem(position);
 

文字大小、样式

app:tabTextAppearance="@style/MyTabLayout"
 

  
  1. <!--TabLayout字体大小-->
  2. <style name="MyTabLayout">
  3. <item name="android:textSize">20sp</item>
  4. <item name="android:textStyle">bold</item>
  5. <item name="android:textAllCaps">false</item>
  6. </style>
textAllCaps 设置大小写

下划线宽度等同文字

app:tabIndicatorFullWidth="false"
 

下划线样式

app:tabIndicator="@drawable/shape_tab_indicator"
 

  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item
  4. android:width="15dp"
  5. android:height="5dp"
  6. android:gravity="center">
  7. <shape>
  8. <corners android:radius="5dp" />
  9. <!--color无效,源码用tabIndicatorColor-->
  10. <solid android:color="@color/colorPrimary" />
  11. </shape>
  12. </item>
  13. </layer-list>

宽度、高度、圆角等

 

Github:

https://github.com/yechaoa/MaterialDesign

 

 

 

文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/78259701

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。