TabLayout的使用及详解

TabLayout    配合  ViewPager使用

步骤1:

<android.support.design.widget.TabLayout
    android:id="@+id/me_shop_order_tab"
    style="@style/Me_Shop_Order_TabLayout_Style"
    app:tabIndicatorColor="@color/black"
    app:tabSelectedTextColor="@color/gray"
    app:tabTextColor="@color/black"
    >
    <!--app:tabBackground="@color/colorPrimary"-->
</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/me_shop_order_viewpager"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">
</android.support.v4.view.ViewPager>

步骤2: 进行findviewbyid

shop_order_tabLayout = (TabLayout) findViewById(R.id.me_shop_order_tab);
shop_order_viewpager = (ViewPager) findViewById(R.id.me_shop_order_viewpager);

步骤3: 标题集合

List<String> titleList = new ArrayList<>();
titleList.clear();
titleList.add("全部");
titleList.add("待付款");
titleList.add("待发货");
titleList.add("待收货");
titleList.add("已完成");

步骤4: 页面 此处使用的是  自定义的page

List<BasePage> pagesList = new ArrayList<>();
pagesList.clear();
pagesList.add(new AllProductPage(mContext));
pagesList.add(new WaitPayPage(mContext));
pagesList.add(new WaitSendPage(mContext));
pagesList.add(new WaitReceivePage(mContext));
pagesList.add(new FinishedPage(mContext));

/**
 * @Author Xi
 * Created by zz.wbkj.xi on 2016/8/16.
 */
public abstract class BasePage {
    public Context mContext;

    public BasePage(Context context) {
        this.mContext = context;
    }

    public abstract View initView();
    public abstract void initData();
    public abstract void initListener();

    // TODO 访问网络数据	这块儿 需要自己写
}

步骤5: 设置模式

shop_order_tabLayout.setTabMode(TabLayout.MODE_FIXED);

步骤6: viewpager设置适配器

// 设置viewpager适配器
shop_order_viewpager.setAdapter(new BasePagerAdapter<BasePage>(mContext,pagesList) {
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        BasePage basePage = pagesList.get(position);
        View currentItemView = basePage.initView();
        basePage.initData();
        basePage.initListener();
        container.addView(currentItemView);
        return currentItemView;
    }
});
/**
 * @Author Xi
 * Created by zz.wbkj.xi on 2016/8/13.
 */
public abstract class BasePagerAdapter<T> extends PagerAdapter {

    public Context mContext;
    public List<T> dataList;

    public BasePagerAdapter(Context context , List<T> dataList) {
        this.mContext = context;
        this.dataList = dataList;
    }

    @Override
    public int getCount() {
        return dataList.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
    @Override
    public abstract Object instantiateItem(ViewGroup container, int position) ;
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }


}


步骤7:   给tablayout 设置 viewpager

shop_order_tabLayout.setupWithViewPager(shop_order_viewpager);

步骤8: 设置tablayout的标题

// 设置tablayout的标题
for (int i = 0; i < titleList.size() ; i++) {
    shop_order_tabLayout.getTabAt(i).setText(titleList.get(i));
}

设置标题时  如果采用下面这种方式  设置 标题部分的  问题不会显示:

shop_order_tabLayout.newTab().setText("test1");

原因是 :

 翻源码吧  在给tablayout设置viewpager 的时候 会自动包含  adapter的改变  滑动状态的改变  点击  tabs 显示 增加titles 等

/**
 * The one-stop shop for setting up this {@link TabLayout} with a {@link ViewPager}.
 *
 * <p>This method will link the given ViewPager and this TabLayout together so that any
 * changes in one are automatically reflected in the other. This includes adapter changes,
 * scroll state changes, and clicks. The tabs displayed in this layout will be populated
 * from the ViewPager adapter's page titles.</p>
 *
 * <p>After this method is called, you will not need this method again unless you want
 * to change the linked ViewPager.</p>
 *
 * <p>If the given ViewPager is non-null, it needs to already have a
 * {@link PagerAdapter} set.</p>
 *
 * @param viewPager The ViewPager to link, or {@code null} to clear any previous link.
 */
public void setupWithViewPager(@Nullable final ViewPager viewPager) 








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值