TabLayout
TabLayout是Android Design库中的实现选项卡效果的第三方控件,TabLayout是安卓6.0之后出现的。
1.引入库
添加依赖 implementation ‘com.android.support:design:28.0.0’
2.简单使用
2.1layout中添加控件
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabSelectedTextColor="#f3f000"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabTextColor="#000000"
>
</android.support.design.widget.TabLayout>
2.2Activity代码
public class TabLayoutSimple extends AppCompatActivity {
private TabLayout mTablayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_layout_simple);
mTablayout = (TabLayout) findViewById(R.id.tablayout);
// 添加选项
mTablayout.addTab(mTablayout.newTab().setText(“热门”));
mTablayout.addTab(mTablayout.newTab().setText(“最新”));
mTablayout.addTab(mTablayout.newTab().setText(“收藏”));
}
}
2.3TabLayout的常用属性
在布局中添加xmlns:app=“http://schemas.android.com/apk/res-auto”
// 下方横线指示器颜色
app:tabIndicatorColor=""
// 指示器高度,设置为0就是没有指示器
app:tabIndicatorHeight=""
// Tab文本默认颜色
app:tabTextColor=""
Tab文本被选中后的颜色
app:tabSelectedTextColor=""
//为Tab文本设置样式,一般是需要为Tab加图标时使用,也可以改变字体大小,定义style
app:tabTextAppearance=""
app:tabMode="" 只有两个值:fixed、scrollable
fixed用于标题栏少的情况,每个Tab可以平分屏幕宽度
scrollable用于标题栏多出屏幕的情况,如果标题栏少的时候用很难看,占不满屏幕
// TabLayout背景,和android:background="“效果一样
app:tabBackground=”"
// 对齐方式: 居中显示center、fill填满
app:tabGravity=""
// 从左边开始偏移距离,tabMode值必须为scrollable才会生效
app:tabContentStart=“150dp”
// 选项卡宽度限制
app:tabMaxWidth="" 最大宽度
app:tabMinWidth="" 最小宽度
// Tab内边距
app:tabPaddingStart=""
app:tabPaddingBottom=""
app:tabPaddingEnd=""
app:tabPaddingTop=""
app:tabPadding=""
3.TabLayout和ViewPager配合使用
(1)TabLayout的Tab数量由ViewPager分页数量决定
(2)TabLayout的Tab内容由ViewPager的Adapter中 getPagerTitle() 方法返回的内容决定
3.1layout中添加控件
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
app:tabGravity=“fill”
app:tabIndicatorColor="?attr/colorPrimary"
app:tabIndicatorHeight=“0dp”
app:tabMode=“scrollable”
app:tabSelectedTextColor="@color/red"
app:tabTextColor="#000000" />
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width=“match_parent”
android:layout_height=“match_parent” />
3.2Activity代码
public class TabLayoutViewPager extends AppCompatActivity {
private String[] titles = new String[]{
“关注”,
“推荐”,
“热点”,
“南京”,
“两会”,
“视频”,
“新时代”,
“小视频”,
“图片”,
“问答”
};
private List fragments;
private TabLayout mTablayout;
private ViewPager mViewPager;
private MyPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_layout_view_pager);
// 初始化fragment数据
initFragments();
// 初始化控件
mTablayout = (TabLayout) findViewById(R.id.tablayout);
mViewPager = (ViewPager) findViewById(R.id.vp);
adapter = new MyPagerAdapter(getSupportFragmentManager());
// viewPager设置适配器
mViewPager.setAdapter(adapter);
// TabLayout 和ViewPager设置绑定
mTablayout.setupWithViewPager(mViewPager);
}
private void initFragments() {
fragments = new ArrayList<>();
for (int i = 0; i < titles.length; i++) {
TabFragment fragment =new TabFragment();
Bundle bundle = new Bundle();
bundle.putString("key",titles[i]);
fragment.setArguments(bundle);
fragments.add(fragment);
}
}
/**
* 必须要重写getPageTitle方法
*/
class MyPagerAdapter extends FragmentPagerAdapter{
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return titles.length;
}
// 必须重写该方法
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
}