如何在 viewpager 中显示 2 个片段

Posted

技术标签:

【中文标题】如何在 viewpager 中显示 2 个片段【英文标题】:how to display 2 fragments in a viewpager 【发布时间】:2013-10-10 08:02:03 【问题描述】:

我的应用程序使用带有 5 个滑动标签的 ViewPager。在大型设备和横向运行应用程序时,我想在我的 ViewPager 上扩展 2 个片段或 2 个标签页,在较小的设备或纵向视图上运行时,我想在我的 ViewPager 上扩展 1 个片段或 1 个标签页。此外,它应该仍然能够像我在 ViewPager 上显示单个片段时通常那样滑动浏览所有选项卡。

我在扩展 Fragment 的 CourseFragment 类中初始化并扩展了我的 ViewPager:

ViewPager mViewPager = (ViewPager) getView().findViewById(
            R.id.pagerYear);

    InfoTechPageAdapter infoTechPageAdapter = new InfoTechPageAdapter(
                getChildFragmentManager());
        mViewPager.setOffscreenPageLimit(5);
        mViewPager.setAdapter(infoTechPageAdapter);

我的 InfoTechPageAdapter 扩展了 FragmentStatePagerAdapter:

package com.usjr.sss.adapter;

import com.usjr.sss.fragment.InfoTechFirstYearFragment;
import com.usjr.sss.fragment.InfoTechFourthYearFragment;
import com.usjr.sss.fragment.InfoTechSecondYearFragment;
import com.usjr.sss.fragment.InfoTechThirdYearFragment;
import com.usjr.sss.fragment.SubmitSubjectFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

public class InfoTechPageAdapter extends FragmentStatePagerAdapter 

public InfoTechPageAdapter(FragmentManager fm) 
    super(fm);


@Override
public Fragment getItem(int pos) 
    Fragment mFragment;

    switch (pos) 

    case 0:
        mFragment = new InfoTechFirstYearFragment();
        mFragment.setArguments(null);
        return mFragment;
    case 1:
        mFragment = new InfoTechSecondYearFragment();
        mFragment.setArguments(null);
        return mFragment;
    case 2:
        mFragment = new InfoTechThirdYearFragment();
        mFragment.setArguments(null);
        return mFragment;
    case 3:
        mFragment = new InfoTechFourthYearFragment();
        mFragment.setArguments(null);
        return mFragment;
    case 4:
        mFragment = new SubmitSubjectFragment();
        mFragment.setArguments(null);
        return mFragment;

    default:
        return null;

    

// end getItem

@Override
public int getCount() 

    return 5;
// end getCount

@Override
public CharSequence getPageTitle(int pos) 
    // Locale l = Locale.getDefault();
    switch (pos) 
    case 0:
        return "FIRST YEAR";
    case 1:
        return "SECOND YEAR";
    case 2:
        return "THIRD YEAR";
    case 3:
        return "FOURTH YEAR";
    case 4:
        return "SUBMIT";

    
    return null;



【问题讨论】:

【参考方案1】:

在 PageAdapter 类中覆盖。

@Override 
public float getPageWidth(int position)  
return(0.5f); 
 

【讨论】:

以上是关于如何在 viewpager 中显示 2 个片段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 tabLayout 在 ViewPager 中显示片段?

从另一个片段返回时如何在视图页面中显示片段?

如何确定 Fragment 何时在 ViewPager 中可见

如何实现具有不同片段/布局的 ViewPager

如何解决片段中的 Viewpager 问题?

如何使用 ViewPager 显示相同的片段,但每次加载不同的数据?