如何解决屏幕旋转时 viewpager 中的选项卡覆盖的问题?

How to solve this that tabs in viewpager overlay when screen rotation?

这里,我有一个带有 ViewPager 的 Activity,它有 4 个选项卡,这里是 activity 屏幕截图 link。

这是垂直屏幕时选项卡 4 的屏幕截图。 当activity打开时,我切换到第四个标签,再切换到第二个,旋转屏幕,第四个标签的一部分会覆盖在第二个标签上,但是当切换到第一个和第三个时,它不会发生, 图片如下:

选项卡 4:

选项卡 1:

选项卡 2:

我怎么能解决这个问题?

viewpager的适配器如下:

public class MainPageFragmentPageAdapter extends FragmentPagerAdapter {

SparseArray<Fragment> fragmentSparseArray = new SparseArray<Fragment>();

private Fragment currentSelectedFragment;

public MainPageFragmentPageAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    if (fragmentSparseArray.get(position) == null) {
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new NewHomePageFragment();
                break;
            case 1:
                fragment = new NewDiscoverFragment();
                break;
            case 2:
                fragment = new NewUserMessageFragment();
                break;
            case 3:
                fragment = new NewUserDetailFragment();
        }
        fragmentSparseArray.put(position, fragment);
    }
    currentSelectedFragment = fragmentSparseArray.get(position);
    return currentSelectedFragment;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}

@Override
public int getCount() {
    return 4;
}

public Fragment getCurrentSelectedFragment() {
    return currentSelectedFragment;
}

}

任何你想看的代码请在下面评论。

正如你所说,当分页器不可见时,你不会销毁Item,所以它仍然在内存中,并重新绘制它

请通过 onConfigurationChanged Android 方法管理屏幕方向。