将滚动视图恢复到Onresume上的位置

时间:2015-09-07 06:51:23

标签: java android

我的布局上有一个滚动视图,滚动后有许多按钮,当它返回到布局时选择一个按钮,滚动视图从顶部开始。我希望滚动视图从用户停止的位置开始。请帮助我成为android的初学者,所以请简要解释一下。

2 个答案:

答案 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 BLOGThis post on SO

答案 1 :(得分:0)

此处描述了最佳解决方案:Link
简而言之: 您必须支持方向更改,因此保存滚动条的X和Y位置不是最佳解决方案。相反,你必须得到顶部可见项目的位置并滚动到它。