我在对话框片段中有一个滚动视图,当方向改变时,滚动视图位置会改变到中间的某个位置。
答案 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]);
}
});
}