DialogFragment中的ScrollView,滚动位置更改方向后更改?

时间:2013-10-08 10:35:50

标签: android dialog position scrollview fragment

我在对话框片段中有一个滚动视图,当方向改变时,滚动视图位置会改变到中间的某个位置。

1 个答案:

答案 0 :(得分:2)

要在手机方向更改时保存并恢复ScrollView的滚动位置,您可以执行以下操作:

将当前位置保存在onSaveInstanceState方法中:

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putIntArray("SCROLL_POSITION",
            new int[]{ mScrollView.getScrollX(), mScrollView.getScrollY()});
}

然后恢复onRestoreInstanceState方法中的位置,请注意我们需要将一个runnable发布到ScrollView以使其工作:

protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    final int[] position = savedInstanceState.getIntArray("SCROLL_POSITION");
    if(position != null)
        mScrollView.post(new Runnable() {
            public void run() {
                mScrollView.scrollTo(position[0], position[1]);
            }
        });
}