如何在 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 中显示片段?