【发布时间】:2015-09-07 15:56:43
【问题描述】:
我的布局上有一个滚动视图和许多按钮,在滚动并选择一个按钮后,当它返回到布局时,滚动视图从顶部开始。我希望滚动视图从用户停止的位置开始。请帮助我是android的初学者,所以请简要解释一下。
【问题讨论】:
我的布局上有一个滚动视图和许多按钮,在滚动并选择一个按钮后,当它返回到布局时,滚动视图从顶部开始。我希望滚动视图从用户停止的位置开始。请帮助我是android的初学者,所以请简要解释一下。
【问题讨论】:
您必须在 Activity 或 Fragment 被销毁之前保存滚动视图的位置。
您可以在onSaveInstanceState 上保存价值
//save value on onSaveInstanceState
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putIntArray("SCROLL_POSITION",
new int[]{ mScrollView.getScrollX(), mScrollView.getScrollY()});
}
然后在onRestoreInstanceState上恢复
//Restore them on onRestoreInstanceState
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]);
}
});
}
以上只是一个例子,更多细节见THIS BLOG和This post on SO。
【讨论】:
此处描述了最佳解决方案:Link
简而言之:
您必须支持方向更改,因此保存滚动条的 X 和 Y 位置并不是最好的解决方案。相反,您必须获取顶部可见项目的位置并滚动到它。
【讨论】: