Android进阶——Material Design新控件之初识TabLayout(一)
来源:互联网 发布:有安卓调音软件吗 编辑:程序博客网 时间:2024/06/07 08:18
引言
Google I/O 2015 推出的 Android Design Support Library令人非常激动。Material Design的推出确实振奋了不少 Android开发者以及用户的心。以前Google给我的感觉就像是他并没太在乎他们的UI(或者审美不同,Gmail不忍吐槽),但是当Material Design伴随Android5.0发布之后,一切好像就都变了个样,Google好像意识到了设计的重要性以及自己以往的种种不足,决定也要迎头赶上,不仅仅只是推出一套Material Design的语言同时也推出了很多新的控件,接下来我们就来学习下 AndroidDesign Support Library库下的所有新的控件,首先从android.support.design.widget.TabLayout开始。
一、TabLayout概述
TabLayout,滑动指示选项卡,继承自HorizontalScrollView(注:与TableLayout毫无关系),提供了一个水平的可滚动布局来展示Tabs。所以有了它我们就不必在去自己定义实现类似ActionBar的Tab栏了(TabLayout provides a horizontal layout to display tabs)与以前早期TabHost不同TabLayout兼容性更强、使用更简单并且效果更好,还自带小滑块的动画效果。如果熟悉Github里的TabPageIndicator,他们的原理大同小异。在开发中结合ViewPager和Fragment使用,我们就可以快速搭建一个Tabs切换的主界面,类似微信、知乎、网易新闻、新浪等等。
二、TabLayout的常用属性和方法
TabLayout除了Android控件常有的属性(以android:为命名空间)之外,还定义了些独有的属性(是以”app:”的命名空间的,形如app:tabMode),这里只列出部分属性和部分方法(getter、setter和属性是一一对应的)。
三、TabLayout的使用步骤
1、构造TabLayout对象
构造TabLayout对象和其他控件一样,欲使用先得到对象,也是有两种方式:代码和xml布局。
- xml方式静态构造
<!--注意一下tabMode这些属性的前缀app:,为什么呢?因为xmlns:app="http://schemas.android.com/apk/res-auto"--><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/id_tabLayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" app:tabGravity="center" /></LinearLayout>
- Java代码动态构造
首先是通过其构造函数得到TabLayout对象
TabLayout tabLayout=new TabLayout(MainActivity.this);
然后设置其一系列属性
tabLayout.setTabMode(TabLayout.MODE_FIXED); tabLayout.setBackgroundColor(Color.parseColor("#2b2b2b")); tabLayout.setSelectedTabIndicatorHeight(4); tabLayout.setTabTextColors(Color.parseColor("#236f28"), Color.parseColor("#bc6e1c"));
记住,TabLayout其本质上一个ViewGroup,只是一个容器用于存放其他View的,这里我们存放的View是Tab,所以我们得把Tab添加到TabLayout里
tabLayout.addTab(tabLayout.newTab().setText("Tab1").setIcon(android.R.drawable.ic_menu_search)); tabLayout.addTab(tabLayout.newTab().setText("Tab2").setIcon(android.R.drawable.ic_menu_agenda)); tabLayout.addTab(tabLayout.newTab().setText("Tab3").setIcon(android.R.drawable.ic_menu_camera));
最后,虽然我们已经把Tab添加到TabLayout了,但是归根结底TabLayout也是一个ViewGroup,所以还需要设置到当前的布局里才能显示。
mFrameLayout.addView(tabLayout);
至此,相信大家应该学会使用这个全新的控件了吧,下一篇Android进阶——Material Design新控件之TabLayout制作可滚动的Tabs页面(二)再结合ViewPager+Fragment的主流架构讲解下应用的注意事项和常见错误的解决。
- Android进阶——Material Design新控件之初识TabLayout(一)
- Android进阶——Material Design新控件之TabLayout制作可滚动的Tabs页面(二)
- Android进阶——Material Design新控件之FloatingActionButton
- Android进阶——Material Design新控件之Snackbar
- Android进阶——Material Design新控件之TextInputLayout
- Android进阶——Material Design新控件之FloatingActionButton
- Android进阶——Material Design新控件之NavigationView
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design控件学习(一)——TabLayout的用法
- Android Material Design 控件之TabLayout 学习
- Android Material Design控件之TabLayout
- Android Material Design控件——TabLayout的用法
- Material Design控件之TabLayout
- Material Design控件介绍(二)——TabLayout
- 枚举类(2)
- 关于fork()函数的一点思考
- android Camera 如何判断当前使用的摄像头是前置还是后置
- iOS 自定义cell改变其中子控件frame值
- apk在安卓系统中简单运行过程
- Android进阶——Material Design新控件之初识TabLayout(一)
- Ubuntu 添加Android SDK及NDK路径到PATH
- 会话 cookie 中缺少HttpOnly 属性 的问题
- EventBus 同一进程中不同组件间的通讯
- 机器分配
- NOIP 2010 - 普及组 导弹拦截 贪心 重庆一中高2018级竞赛班第三次测试 2016.7.24 Problem 3
- 1083. List Grades (25)
- 自己造轮子系列(一)------数据库连接池的实现
- Java编程思想第六章