0

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

4

1 回答 1

2

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

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

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

然后在 onRestoreInstanceState 方法中恢复位置,注意我们需要向 ScrollView 发布一个 runnable 才能让它工作:

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]);
            }
        });
}
于 2013-10-08T10:39:45.190 回答