1、在gradle下面添加compile ‘com.android.support:design:23.3.0’,
2、布局添加
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:id="@+id/tab"
android:layout_height="50dp"
app:tabMode="scrollable"
app:tabGravity="center"
app:tabSelectedTextColor="@color/red"
app:tabTextColor="@color/black"
app:tabIndicatorColor="@color/oldlace"
/>
<android.support.v4.view.ViewPager
android:layout_below="@+id/tab"
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
根布局添加:xmlns:app=”http://schemas.android.com/apk/res-auto”。
3、适配器继承FragmentStatePagerAdapter 或者fragmentPagerAdapter 。
两者区别:两个都继承pagerAdapter,
FragmentPagerAdapter:对于不再需要的Fragment选择调用detach,仅仅销毁视图,并不会销毁fragment实例。
FragmentStatePagerAdapter:会销毁不再需要的fragment当当前事务提交后,会彻底的将fragment从当前的activity的FragmentManager中移除,state标明,销毁时会将其OnSaveInstanceState(Bundle outState)中的bundle信息保存下来,当用户切换回来,可以通过该bundle恢复生成新的Fragment,也就是说你可以onSaveInstanceState(Bundle outState)方法中保存一些数据,在onCreate中进行恢复创建。
使用FragmentStatePagerAdapter当然更省内存,但是销毁新建也是需要时间的。一般情况下,如果你是制作主页面,就3、4个Tab,那么可以选择使用FragmentPagerAdapter,如果你是用于ViewPager展示数量特别多的条目时,那么建议使用FragmentStatePagerAdapter。
private List fragmentList = new ArrayList<>();
private List titleList = new ArrayList<>();
public TabAdapter(FragmentManager fm,List<Fragment> fragmentList,List<String> titleList) {
super(fm);
this.fragmentList = fragmentList;
this.titleList = titleList;
}
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
4、添加标题栏,和添加标题栏对应的fragment,
List<Fragment> fragmentList = new ArrayList<>();
List<String> titleList = new ArrayList<>();
5、new 一个TabAdapter,与viewpager进行绑定, viewpager.setAdapter(adapter);
tablayout.setupWithViewPager(viewpager);
ok!全部完成