[英]Resume a scroll view to a position on Onresume
我在布局上有一个滚动视图,在滚动并选择一个按钮后,当它返回到布局时,有许多按钮,滚动视图从顶部开始。 我希望滚动视图从用户停止的地方开始。 请帮助是Android的初学者,所以请简要说明。
在销毁“活动”或“片段”之前,您必须保存滚动视图的位置。
您可以在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]);
}
});
}
最佳解决方案的描述如下: 链接
简而言之:您必须支持方向更改,因此保存滚动条的X和Y位置并不是最佳解决方案。 相反,您必须获取顶部可见项目的位置并滚动到该位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.