【问题标题】:Android ViewPager Show Multiple Fragments depending on Screen SizeAndroid ViewPager 根据屏幕大小显示多个片段
【发布时间】:2014-05-10 16:13:58
【问题描述】:

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

【问题讨论】:

标签: android android-fragments android-viewpager


【解决方案1】:

在您的 ViewPagerAdapter 类中,覆盖 getPageWidth()。它返回一个浮点数(默认值为 1),其中包含每个页面应占用的空间量。例如,将此值更改为 .5f 将使两个片段出现在同一个窗口中。

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

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

在 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);
}

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

注意:此方法会导致 PagerTitleStrip 和 PagerTabStrip 出现问题。显示为选中的“当前选项卡”将显示为您视图中最左侧的任何片段。

Alternative solutions and more information.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2016-12-11
    • 2022-08-14
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多