TabLayout是design库提供的控件,可以方便的使用指示器,使用非常方便,Android Studio只需要在gradle中引入即可使用 .
TabLayout即可以单独使用,也可以配合ViewPager来使用.
今天咱们说一下Tablayout配合ViewPager如何使用
1.首先导入依赖
2.布局标签适应全路径的TabLayout
.
3.设置存放标题的集合 和 fargment集合
4.添加标题和页面
5.设置适配器
6.把Tablayout和ViewPager关联
7.Tablayout的常用属性
1.改变选中字体的颜色
app:tabSelectedTextColor="@android:color/holo_orange_light"
2.改变未选中字体的颜色
app:tabTextColor="@color/colorPrimary"
3.改变指示器下标的颜色
app:tabIndicatorColor="@null"---没有指示器
app:tabIndicatorColor="@android:color/holo_orange_light"
4.改变整个TabLayout的颜色
app:tabBackground="color"
5.内容的显示模式
app:tabGravity="center"//居中,如果是fill,则是充满
6.好像没有直接变大的方法,可是找到了这个:
app:tabTextAppearance="@android:style/TextAppearance.Holo.Large"//设置文字的外貌
7.设置指示器下标的高度:
app:tabIndicatorHeight="4dp"
8.有时候Tab只有文字感觉有点单调了:添加图标
tabLayout.addTab(tabLayout.newTab().setText("Tab 1").setIcon(R.mipmap.ic_launcher));
public class Frag_01 extends Fragment {
private ViewPager viewPager;
//fragment集合
ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();
//标题集合
ArrayList<String> titleList = new ArrayList<String>();
private Frag_04 frag_04;
private Frag_05 frag_05;
private Frag_06 frag_06;
private TabLayout tab;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_01,container,false);
//找控件
tab = view.findViewById(R.id.table);
viewPager = view.findViewById(R.id.viewpager);
//添加title
titleList.add("大鸟");
titleList.add("小鸟");
titleList.add("大鸟");
//实例化fragment
frag_04 = new Frag_04();
frag_05 = new Frag_05();
frag_06 = new Frag_06();
//添加fragment
fragmentList.add(frag_04);
fragmentList.add(frag_05);
fragmentList.add(frag_06);
//设置适配器
MPagerAdapter mPagerAdapter = new MPagerAdapter(getChildFragmentManager());
viewPager.setAdapter(mPagerAdapter);
//关联
tab.setupWithViewPager(viewPager);
return view;
}
//适配器
private class MPagerAdapter extends FragmentPagerAdapter {
public MPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
}
}