Android TabLayout详解

Material Design伴随android5.0出现后,我们发现Google终于意识到了自己以往在UI设计方面的不足(或者说缺陷),其中一款用于标签导航的控件正式出现在design兼容包中——滑动指示选项卡tablayout,tablayout主要用于可切换的标签效果。(注:大家千万别和TableLayout控件搞混了,两个之间没有一毛钱关系)

 

首先在代码中获取tablayout控件,然后通过代码的方式添加签:

 

  • tablayout.addTab(tablayout.newTab().setText("tab"+i));
  • tablayout.addTab()中还可以添加boolean参数,true为默认选中标签,false为该标签没被选中;
  • tablayout.addTab(tablayout.newTab().setText("tab"+i),false);

 

 

  1. app:tabSelectedTextColor  
  2. app:tabMode  //参数可选fixed和scrollable——fixed是指固定个数, scrollable是使其可以横行滚动
  3. app:tabGravity //对齐方式,可选fill和center(注:此两种属性值只有在tabMode设置为fixed的情况下有效)

 

在代码中还可以(代码中写的方法在xml的TabLayout控件下都有与之对应的属性,代码觉得麻烦的就在xml中设置):

 

  1. tablayout.setSelectedTabIndicatorHeight(); //设置被选中标签下方导航条的高度
  2. tablayout.setTabTextColors(Color.Black,Color.Gray); //设置标签的字体颜色,1为未选中标签的字体颜色,2为被选中标签的字体颜色
  3. tablayout.setTabMode();
TabMode有两个可选参数:
MODE_FIXED 表示宽度始终是tablayout控件指定的宽度,如果标签过多,那么就无限挤压控件
MODE_SCROLLABLE  表示每个标签都保持自身宽度,一旦标签过多,给标题栏提供支持横向滑动的功能

   4.tablayout.setTabGravity(); //注:此条属性必须配合MODE_FIXED使用,不然不起作用

     TabGravity有两个可选参数:
     GRAVITY_FILL  让每个标签平分TabLayout的全部宽度
             GRAVITY_CENTER  让每个标签显示自身宽度,然后所有标签居中显示

TabLayout还有以下常用设置方法:

 

  • // tab指示符颜色
  • app:tabIndicatorColor 
  • // tab被选中字体颜色
  • app:tabSelectedTextColor 
  • // tab未被选中字体颜色   
  • app:tabTextColor     
  • //设置被选中标签下方导航条颜色            
  • tablayout.setSelectedTabIndicatorColor();

TabLayout中改变tab的字体大小只能依靠app:tabTextAppearance来设置

app:tabTextAppearance="@style/tabtextstyle"

在res/values/styles中添加:

<style name="tabtextstyle">

<item name="Android:textSize">@dimen/tabtextsize</item>

</style>

在res/values/dimens中添加:

<dimen name="tabtextsize">12sp</dimen>

posted @ 2017-04-01 12:53  猴子1  阅读(905)  评论(0编辑  收藏  举报