jyo*_*Pro 2 android android-fragments android-viewpager
一个如何根据屏幕大小Fragment在a中显示多个s ViewPager;如果是小型设备,它会Fragment在一个屏幕上显示 1 。如果它是横向模式的平板电脑,它会Fragment在一个屏幕上显示 2 个,并排显示。如果是纵向模式的平板电脑,它会显示 1 Fragment?
在 ViewPagerAdapter 类中,覆盖 getPageWidth()。它返回一个浮点数(默认值为 1),其中包含每个页面应占用的空间量。例如,将此值更改为 .5f 将使两个片段出现在同一窗口中。
@Override public float getPageWidth(int position) {
return(1f/simultaneousPages);
}
Run Code Online (Sandbox Code Playgroud)
此外,应该增加 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);
}
Run Code Online (Sandbox Code Playgroud)
要根据屏幕大小更改视图,只需根据需要更改 concurrentPages 变量即可。有关检测物理屏幕尺寸的更多信息。
注意:此方法会导致 PagerTitleStrip 和 PagerTabStrip 出现问题。显示为选定的“当前选项卡”将显示为视图中最左侧的任何片段。