如何根据屏幕尺寸在Fragment
中显示多个ViewPager
;如果它是一个小设备,它会在一个屏幕上显示1 Fragment
。如果它是横向模式的平板电脑,它会在一个屏幕上显示2 Fragment
,彼此相邻。如果它是纵向模式的平板电脑,它将显示1 Fragment
?
答案 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出现问题。 "当前标签"显示为选中的将显示为视图中最左边的任何片段。