【问题标题】:Resume a scroll view to a position on Onresume将滚动视图恢复到 Onresume 上的某个位置
【发布时间】:2015-09-07 15:56:43
【问题描述】:

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    您必须在 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 BLOGThis post on SO

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多