TabLayout是Android 5.0新特性——Material Design中的一个控件,是一个标签页的导航条,常结合ViewPager完成页面导航。

和其他MD控件一样,使用TabLayout之前需要在gradle文件中声明依赖:

compile 'com.android.support:design:25.0.0'

1、TabLayout的属性:

        app:tabIndicatorColor:TabLayout下面提示条的颜色
app:tabIndicatorHeight:TabLayout下面提示条的高度
app:tabSelectedTextColor:TabLayout中被选中的Tab的文本颜色
app:tabTextColor:TabLayout中没有被选中的Tab的文本颜色

2、TabLayout和ViewPager结合使用:

TabLayout最常见的用法就是结合ViewPager使用完成页面的导航。使用中需要注意,TabLayout需要先绑定到ViewPager,然后再设置Tab标题,否则会发生Tab标题文本消失的问题。代码如下:

        // 将TabLayout和ViewPager进行绑定
tabs.setupWithViewPager(vp);
// TabLayout中Tab的排列方式,FIXED表示平分布局;SCROLLABLE表示线性排列,可滑动
tabs.setTabMode(TabLayout.MODE_FIXED);
// 给TabLayout中的Tab添加文本
for (int i = 0; i < titles.size(); i++) {
tabs.getTabAt(i).setText(titles.get(i));
}
// 为ViewPager添加适配器
vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return fragments.get(position);
} @Override
public int getCount() {
return fragments.size();
}
});

3、TabLayout添加图标:

如果是主页面上的TabLayout,那么肯定是有图标的。我们以前会使用RadioGroup来实现这一功能,现在有了TabLayout,就可以更加轻松的实现了。实现方法就是为通过setIcon()方法为每个Tab设置Icon即可。例如:上面的代码可以改成:

        // 将TabLayout和ViewPager进行绑定
tabs.setupWithViewPager(vp);
// TabLayout中Tab的排列方式,FIXED表示平分布局;SCROLLABLE表示线性排列,可滑动
tabs.setTabMode(TabLayout.MODE_FIXED);
// 给TabLayout中的Tab添加图标和文本
for (int i = 0; i < titles.size(); i++) {
tabs.getTabAt(i).setText(titles.get(i)).setIcon(R.mipmap.ic_launcher);
}
// 为ViewPager添加适配器
vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return fragments.get(position);
} @Override
public int getCount() {
return fragments.size();
}
});

运行结果如图所示:

 

以上就是对TabLayout基本用法的介绍,下面贴出码云中的源码,供大家参考。

DEMO地址

【Android - 控件】之MD - TabLayout的使用的更多相关文章

  1. RxJava RxBinding RxView 控件事件 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. [Android Pro] android控件ListView顶部或者底部也显示分割线

    reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...

  3. Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像

    此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...

  4. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

  5. Android - 控件android:ems属性

    Android - 控件android:ems属性http://blog.csdn.net/caroline_wendy/article/details/41684255?utm_source=tui ...

  6. Android 控件知识点,

    一.Android控件具有visibility属性,可以取三个值:visible(默认值)可见,invisible(不可见,但仍然占据原有的位置和大小,可以看做是变得透明了),gone(空间不仅不可见 ...

  7. UIAutomator定位Android控件的方法

    UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...

  8. 从Android系统出发,分析Android控件构架

    从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...

  9. Android控件系列之RadioButton&RadioGroup(转)

    学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...

  10. 第三个 android控件

    android控件以及控件对应的属性:

随机推荐

  1. Rest_Framework之认证、权限、频率组件源码剖析

    一:使用RestFramwork,定义一个视图 from rest_framework.viewsets import ModelViewSet class BookView(ModelViewSet ...

  2. TensorFlow Object Detection API中的Faster R-CNN /SSD模型参数调整

    关于TensorFlow Object Detection API配置,可以参考之前的文章https://becominghuman.ai/tensorflow-object-detection-ap ...

  3. 二:Mysql库相关操作

    1:系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等.performance_schema: My ...

  4. 机器学习 AI 谷歌ML Kit 与苹果Core ML

    概述 移动端所说的AI,通常是指"机器学习". 定义:机器学习其实就是研究计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身.从实践的意义 ...

  5. 第三十五章 POSIX共享内存

    POSIX共享内存函数介绍 shm_open 功能: 用来创建或打开一个共享内存对象 原型: int shm_open(const char *name, int oflag, mode_t mode ...

  6. EffectiveJava-2

    一.使用类库 使用类库的好处: 无须关心方法是如何实现的,由算法专家花了大量时间设计.实现和测试这个方法,不仅保证了正确性,而且一旦有缺陷,下一个版本就会修复. 不必浪费时间为哪些与工作不太相关的问题 ...

  7. NOIP 模拟赛 23 T4 大逃亡O(二分+广搜)(∩_∩)O

    题目描述 给出数字N(1≤N≤10000),X(1≤x≤1000),Y(1≤Y≤1000),代表有N个敌人分布一个X行Y列的矩阵上,矩形的行号从0到X-1,列号从0到Y-1再给出四个数字x1,y1,x ...

  8. Project Euler 51: Prime digit replacements

    通过替换*3这样一个两位数的第一位,我们可以发现形成的九个数字有六个是质数,即13, 23,43,53,73,83.类似的,如果我们用同样的数字替换56**3这样一个五位数的第三位和第四位,会生成56 ...

  9. NOIP 模拟29 B 侥幸

    这次考得好纯属是侥幸,我T3打表试数试了两个小时,没有想打T2的正解(其实是打不出来)所以这个T3A掉纯属是侥幸,以后还是要打正解 (以下博客最好按全选观看,鬼知道为啥这个样子!) 在这里也口胡一下我 ...

  10. Python3安装目录介绍

    目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构. 假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了: Foo/ |-- bin/ | ...