Design Library -- TabLayout的用法
TabLayout
TabLayout提供了一个水平的布局用来展示Tabs
可以实现与ViewPager联动(实现效果类似ViewPagerIndicator,不过ViewPagerIndicator,TabLayout各有各的优点,如果是单纯的联动推荐使用TabLayout)
使用注意
- Theme要求
Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.
在清单文件中设置如下代码即可:
android:theme="@style/Theme.AppCompat"
- 重写TabFragmentAdapter中的getPageTitle方法,如果忘记重写会导致联动Viewpager后没有title
@Override
public CharSequence getPageTitle(int position) {
return mTitles.get(position);
}
- 在Tab选中的时候,设置ViewPager的联动:
viewpager.setCurrentItem(tab.getPosition());
- 在TabLayout的监听里面,onTabSelected方法里
使用说明
只实现滚动列表
- 用资源文件或者code,不连动
滚动并联动
- 资源文件或代码addtab
- ViewPager + Fragment
- FragmentAdapter或者FragmentStateAdapter并且要手动实现getPageTitle(int position)方法
基本的使用与属性详解
- 这篇文章有详细的与联动实现,并且有每一个页面的Fragment写法,每个title-item的自定义Tab样式(因为TabLayout的Tab选择时,字体比未选中大了一号,自带的Api中tabTextAppearance(文字样式)已经不能满足)
从TabLayout源码告诉你使用它的正确姿势,让你马上爱上它
- 一个很详细的测试项目