我的布局上有一个滚动视图,滚动后有许多按钮,当它返回到布局时选择一个按钮,滚动视图从顶部开始。我希望滚动视图从用户停止的位置开始。请帮助我成为android的初学者,所以请简要解释一下。
答案 0 :(得分:0)
在您的活动或片段被销毁之前,您必须保存滚动视图的位置。
您可以在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。
答案 1 :(得分:0)
此处描述了最佳解决方案:Link
简而言之:
您必须支持方向更改,因此保存滚动条的X和Y位置不是最佳解决方案。相反,你必须得到顶部可见项目的位置并滚动到它。