每天记录学习的新知识 : TabLayout+ViewPager实现页面切换

摘要

简单的例纸

在这里插入图片描述
1.布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"
        app:tabIndicatorHeight="1dp"
        app:tabSelectedTextColor="@color/colorPrimary"
        app:tabTextColor="@color/colorAccent" />


    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</LinearLayout>

2.创建FragmentPagerAdapter

    public class SKFragmentPagerAdapter extends FragmentPagerAdapter {

        private List<Fragment> data;

        private SKFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
            data = new ArrayList<>();
        }

        @Override
        public Fragment getItem(int position) {
            return data.get(position);
        }

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

        public <T extends Fragment> void add(T fragment) {
            data.add(fragment);
        }
    }

3.初始化ViewPager

SKFragmentPagerAdapter adapter =
                new SKFragmentPagerAdapter(getSupportFragmentManager());
adapter.add(new MainFragment());
adapter.add(new MainFragment());
adapter.add(new MainFragment());
adapter.add(new MainFragment());
viewPager.setAdapter(adapter);

4.初始化选项卡

tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());

5.绑定ViewPager和TabLayout

在绑定之前要确保已经进行了setAdapter和addTab

tabLayout.setupWithViewPager(viewPager);

6.添加TabLayout的标题

标题内容添加不能在 5 之前调用!否则会出现标题内容不显示的现象

tabLayout.getTabAt(0).setText(s);
tabLayout.getTabAt(1).setText(s);
tabLayout.getTabAt(2).setText(s);
tabLayout.getTabAt(3).setText(s);

7.另一种添加TabLayout标题的方法

不使用6中提供的方式,而是重写 getPageTitle 就可以设置标题。

    public static final String[] TITLE_LIST = {"我发起", "待处理", "已处理", "抄送我的"};

    public class SKFragmentPagerAdapter extends FragmentPagerAdapter {
        private List<Fragment> data;

        private SKFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
            data = new ArrayList<>();
        }

        @Override
        public Fragment getItem(int position) {
            return data.get(position);
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return (TITLE_LIST == null || position >= TITLE_LIST.length) ? "" : 
            TITLE_LIST[position];
        }

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

        public <T extends Fragment> void add(T fragment) {
            data.add(fragment);
        }
    }

参考:
TabLayout+ViewPager+Fragment实现切页展示:https://blog.csdn.net/qq_34773981/article/details/82022647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风徐来辽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值