我有一个应用程序,其主要导航功能是一个ViewPager基本上无限的页面.我正在使用类似于InfiniteViewPager(带有a FragmentStatePagerAdapter)的东西,在ViewPager的中间开始导航,因此左侧和右侧都有页面开始.我也使用负边距mPager.setPageMargin(-50);使两边的页面略微可见.
我正在从网上加载大量数据,因此我通过在我的活动中使用android:configChanges="orientation|keyboardHidden"和onConfigurationChanged覆盖来自行处理配置更改.主要是,我不想重新创建我的活动,因为我认为在改变方向时需要花费太长时间.
我打开应用程序,向任一方向滑动,等待ViewPager停止动画,然后更改方向.当前页面现在稍微偏离中心,一个相邻页面比另一个更暴露.有时其中一个相邻页面完全在屏幕外.
如果我触摸页面,ViewPager会滚动到当前页面并按预期显示,但除非我这样做,否则显示错误.我遇到这个问题从风景到肖像,从肖像到风景.我已尝试设置OnGlobalLayoutListener并执行mViewPager.setCurrentItem(mViewPager.getCurrentItem())但ViewPager忽略setCurrentItem如果您要求它将当前项目设置为实际当前项目.
主要活动
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//whatever I do in here doesn't make a difference.
//my viewpager still displays off center, even if I do nothing custom
}
Run Code Online (Sandbox Code Playgroud)
寻呼机适配器
private class MyAdapter extends FragmentStatePagerAdapter{
public CarouselPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
PageData dataForThisPage = mModel.getDataForPage(position);
PageContainerFragment f = PageContainerFragment.create(position, …Run Code Online (Sandbox Code Playgroud)