从纵向更改为横向时,ViewPager上的页面位置

时间:2015-04-15 09:25:06

标签: android android-viewpager

在编辑图库时,我从纵向更改为横向时遇到问题。更改屏幕方向时,方法PageAdapter.instantiateItem(View container, int position)中的页面位置变为0。我希望存储当前页面位置,以便在方向更改时保留在此页面中。

1 个答案:

答案 0 :(得分:2)

您需要将当前显示的页面存储在已保存的实例状态中。有关如何保存状态,请阅读documentation

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the current item
    savedInstanceState.putInt("current_item", pager.getCurrentItem());

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

更改了方向后,该状态可以为restored,并用于设置寻呼机的位置。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // Always call the superclass first

    // Check whether we're recreating a previously destroyed instance
    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentItem = savedInstanceState.getInt("current_item");
    }
}

致电pager.setCurrentItem(mCurrentItem);,例如在onStart()onResume()方法中。

有关如何获取和设置当前所选项目,请阅读ViewPager文档:

getCurrentItem()

setCurrentItem()