使用tablayout打造标题栏

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!全部完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值