繁体   English   中英

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

[英]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]);
            }
        });
}

上面只是一个示例,有关更多详细信息,请参见THIS BLOGSO上的这篇文章

最佳解决方案的描述如下: 链接
简而言之:您必须支持方向更改,因此保存滚动条的X和Y位置并不是最佳解决方案。 相反,您必须获取顶部可见项目的位置并滚动到该位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM