Android ViewPager根据屏幕大小显示多个片段

时间:2014-05-10 16:13:58

标签: android android-fragments android-viewpager

如何根据屏幕尺寸在Fragment中显示多个ViewPager;如果它是一个小设备,它会在一个屏幕上显示1 Fragment。如果它是横向模式的平板电脑,它会在一个屏幕上显示2 Fragment,彼此相邻。如果它是纵向模式的平板电脑,它将显示1 Fragment

1 个答案:

答案 0 :(得分:4)

在ViewPagerAdapter类中,覆盖getPageWidth()。它返回一个float(默认值为1),每个页面应占用的空间量。例如,将此值更改为.5f将在同一窗口中显示两个片段。

@Override public float getPageWidth(int position) {
    return(1f/simultaneousPages);
}

此外,应增加setOffscreenPageLimit()。它的默认值是1,这意味着现在我们显示两个页面,没有足够的片段将在后台加载到内存中。作为一般规则,这应该是每个屏幕上页面数量的两倍。

在MainActivity.java(或任何使用ViewPagerAdapter的活动)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from activity_main.xml
    setContentView(R.layout.activity_main);

    // Locate the viewpager in activity_main.xml
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);

    // Set the ViewPagerAdapter into ViewPager
    viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));

    // Load extra pages into memory for smooth transitions
    viewPager.setOffscreenPageLimit(2*simultaneousPages);
}

要根据屏幕大小更改视图,只需根据需要更改simultaneousPages变量。 More on detecting physical screen sizes.

注意:此方法会导致PagerTitleStrip和PagerTabStrip出现问题。 "当前标签"显示为选中的将显示为视图中最左边的任何片段。

Alternative solutions and more information.