小编pet*_*oss的帖子

Viewpager +配置更改=关闭中心当前项目

我有一个应用程序,其主要导航功能是一个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)

android android-orientation android-viewpager

0
推荐指数
1
解决办法
1875
查看次数