zoukankan      html  css  js  c++  java
  • Android两种为ViewPager+Fragment添加Tab的方式

    在Android开发中ViewPager的使用是非常广泛的,而它不仅仅能够实现简单的开始引导页,还可以结合Fragment并添加Tab作为选项卡或为显示大批量页面实现强大的顺畅滑动

    下面介绍两种为ViewPager+Fragment添加Tab的方式:

    第一种:

    在MainActivity布局中定义一个ViewPager

    在MainActivity中声明ViewPager并实现它的Adapter继承自FragmentPagerAdapter

    首先需要通过重写有参的构造方法来获取FragmentManager对象,并重写一系列方法:

    1.在getItem中通过switch判定当前的ViewPager在第几个页面,返回对应的Fragment

    2.getCount最简单,直接返回想要创建的ViewPager的页数

    3.重写getPageTitle方法,通过其返回值来在标签上显示一些数据,(需要在创建标签时通过adapter调用该方法自己设置显示的数据)

    4.在MainActivity中获取ActionBar对象,通过action.newTab创建标签,通过action的addTab方法为ViewPager添加标签(通过for循环中的adapter的getCount方法作为条件来添加对应数量的标签)

    5.最后通过分别实现ViewPager和Tab的监听事件来实现ViewPager和Tab的一一对应

    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }
    });
    actionBar.newTab().setTabListener(new ActionBar.TabListener() {
        @Override
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            mViewPager.setCurrentItem(tab.getPosition());
        }
        @Override
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        }
        @Override
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
        }
    });

    第二种:

    在CollectionDemoActivity的布局里存放一个ViewPager,并在顶部显示标签(需要写在ViewPager布局中)

    在CollectionDemoActivity中声明ViewPager并实现它的Adapter继承自FragmentStatePagerAdapter

    首先需要通过重写有参的构造方法来获取FragmentManager对象,并重写一系列方法:

    1.在getItem中绑定一个Fragment,并可以通过Bundle对其进行传值,最终返回fragment对象

    2.同上

    3.如果在布局中定义了ViewPager的顶部标签,需要在此重写getPageTitle方法,通过其返回值来在标签上显示一些数据

    4.在getItem中所绑定的Fragment布局中,定义想要显示的布局即可,并在Fragment中通过getArguments获取到Bundle传递的值

    注意:FragmentPagerAdapter和FragmentStatePagerAdapter的区别

    1.通过继承FragmentPagerAdapter创建的Fragment对象会永久存储在内存中,因此通常用于显示少量pager页面,像选项卡

    2.通过继承FragmentStatePagerAdapter只会保留至多三个pager页面(即当前页面,前一个和后一个,如果当前页面为首个,则只会存在两个),因此通常用于显示比较多的pager页面,像关联着ListView的pager页面

  • 相关阅读:
    NSCharacterSet 最经常使用的使用方法
    IOS
    hdu 3117 Fibonacci Numbers
    Hibernate5配置与使用具体解释
    SDNU 1206.蚂蚁感冒 【代码如此简单,思维练习】【7月29】
    2048游戏分析、讨论与扩展
    hash_set和hash_map
    实现邮箱找回的思路分析
    学习OpenCV——粒子滤波(网上两篇文章总结)
    学习OpenCV——配置CUDA环境
  • 原文地址:https://www.cnblogs.com/cxsy/p/5737820.html
Copyright © 2011-2022 走看看