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页面

posted @ 2016-08-04 18:17  )^程序猿^(  阅读(2918)  评论(0编辑  收藏  举报