利用TabLayout(5.0新技术)+ViewPager+Fragment方法实现书签导航

本文介绍如何使用Fragment+ViewPager+TabLayout实现书签导航功能。主要步骤包括:为每个书签创建Fragment,初始化Fragment集合,创建FragmentPagerAdapter并设置ViewPager,绑定TabLayout与ViewPager,并设置书签名称。

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

“效果展示:
效果:顶部有书签Tablayout,点击书签或滑动Fragment,
通过ViewPager可以切换UI界面。比如网易新闻。
这里写图片描述

实现书签导航思路:
Fragment + ViewPager + TabLayout(5.0新技术)
   1.有多少个书签,就创建多少个Fragment。
   2.初始化数据: 找出Fagment的对象,存进集合。
   3.适配数据:创建一个类,继承FragmentPagerAdapter,
     把碎片管理器getSupportFragmentManager(),集合lis传送过去。
     在布局添加ViewpPager,再把适配到的数据设置到ViewPager中。
   4.加依赖包:design.
     作用:可以设置书签导航,可让书签和ViewPager相互监听。
   5.找到TabLayout的对象,让tablayout和Viewpager绑定.   
     tabLayout.setupWithViewPager(viewPager);   
   6.设置书签名称步骤:
    a .初始化数据,把标签的名字添加到List集合中,把list传送到适配器中
    b .在适配器中重写构造方法,再重写一个 getPageTitle方法,
       返回一个String title = titleList.get(position);值。
   7.如果多个导航标签,可利用滚动模式 :SCROLLABLE   

代码展示:
1.MainActivity的代码:

public class Fragment_ViewPager_TabLayout extends AppCompatActivity {
    private List<Fragment> list;
    private ViewPager viewPager;
    private TabLayout tabLayout;
    private  List<String> titleList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_viewpager_tab);
        viewPager =
         (ViewPager) findViewById(R.id.viewpager2);
        tabLayout = (TabLayout) findViewById(R.id.tablayout);
        loadData();
        BaseFragmentPagerAdapter_TabLayout adapter = new BaseFragmentPagerAdapter_TabLayout(getSupportFragmentManager(),
        list,titleList);
        viewPager.setAdapter(adapter);
        //tablayout和Viewpager绑定在一起
      tabLayout.setupWithViewPager(viewPager);
        //如果多个导航标签,则利用下面的的滚动模式
       tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);    
}
    private void loadData() {
        list = new ArrayList<Fragment>();
        Fragment fragmentA = new Fragment_A();
        list.add(fragmentA);

        Fragment fragmentB = new Fragment_B();
        list.add(fragmentB);

        Fragment fragmentC = new Fragment_C();
        list.add(fragmentC);

        Fragment fragmentD = new Fragment_D();
        list.add(fragmentD);

        //.设置书签名称步骤:
        //1.初始化数据,把书签的名称添加到List集合中,把list传送到适配器中
        //2.在适配器中重写构造方法,再重写一个 getPageTitle方法,返回一个String title = titleList.get(position);值。
        titleList = new ArrayList<>();
        titleList.add("应用");
        titleList.add("游戏");
        titleList.add("主页");
        titleList.add("管理");
    }
}

2.FragmentPagerAdapter的代码:

public class BaseFragmentPagerAdapter_TabLayout extends FragmentPagerAdapter {
    private final List<String> titleList;
    private List<Fragment> list;


    public BaseFragmentPagerAdapter_TabLayout(FragmentManager fm, List<Fragment> list, List<String> titleList) {
        super(fm);
        this.list=list;
        this.titleList = titleList;
    }

    @Override
    public Fragment getItem(int position) {

        return list.get(position);
    }

    @Override
    public int getCount() {

        return list.size();
    }
    //这个方法用于添加表名
    @Override
    public CharSequence getPageTitle(int position) {
       String title ="";
        if(titleList!=null){
            title = titleList.get(position);
    }
        return title;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值