我在对话框片段中有一个滚动视图,当方向改变时,滚动视图位置改变到中间的某个地方。
问问题
1649 次
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 回答