Fragment + TabLayout (页签指示器)

本文介绍如何在Android应用中实现ViewPager嵌套Fragment,并在顶部添加TabLayout作为页面指示器。通过示例代码展示了如何配置TabLayout与ViewPager的联动,以及如何自定义适配器来加载多个Fragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章主要是viewpager里面嵌套fragment ,同时在头部添加页签指示器..废话不多说,直接上代码~

先看一下效果图:
这里写图片描述

1.首先,创建布局.一个LinearLayout 包裹一个 TabLayout 和 一个viewpager

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/activity_main"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.tablayout.MainActivity">

    <android.support.design.widget.TabLayout
        android:id="@+id/tablayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

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

</LinearLayout>

2.利用butterknife找到tablayout和viewpager( ps:butterknife和findViewById一个道理,没用过butterknife,可以使用findViewById)

    @Bind(R.id.tablayout)
    TabLayout mTabLayout;
    @Bind(R.id.viewpager)
    ViewPager mViewPager;

   ButterKnife.bind(this);
//使tabLayout 与  viewpager 关联起来
            mTabLayout.setupWithViewPager(mViewPager);

            //设置viewpager 适配器 **这里我们使用的适配器继承的是 FragmentPagerAdapter
            ViewpagerAdapter adapter = new ViewpagerAdapter(getSupportFragmentManager());
            mViewPager.setAdapter(adapter);

           //定义fragment集合
            List<Fragment> fragmentList = new ArrayList<>();
            fragmentList.add(new BlankFragment());
            fragmentList.add(new BlankFragment());
            fragmentList.add(new BlankFragment());
            //往适配器添加参数
            adapter.addFragment(fragmentList);

下面需要注意的是我们使用的适配器继承FragmentPagerAdapter,搭配fragment很好用. 在适配器中重写getPageTitle(),为tabLayout添加标签

class ViewpagerAdapter extends FragmentPagerAdapter{
        //穿建集合,用来盛装fragment
        List<Fragment> mList = new ArrayList<>();

        //自定义方法,用来添加fragment
        public void addFragment( List<Fragment> list){
            this.mList.addAll(list);
            //不要忘记更新适配器哦~
            notifyDataSetChanged();
        }

        public ViewpagerAdapter(FragmentManager fm) {
            super(fm);
        }

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

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

        String[] tabs = {
                "标签1","标签2","标签3"
        };
        //重写此方法,给tabLayout添加标签
        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }
    }

最后,使用fragment不要导错包,我们使用的是V4包下 ,使用的fragment管理器也是V4的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值