【问题标题】:ScrollView in DialogFragment, Scroll position Changed after orientation changed?DialogFragment中的ScrollView,方向改变后滚动位置改变了吗?
【发布时间】:2013-10-08 10:35:50
【问题描述】:

我在对话框片段中有一个滚动视图,当方向改变时,滚动视图的位置会改变到中间的某个位置。

【问题讨论】:

    标签: android dialog position scrollview fragment


    【解决方案1】:

    要在手机方向改变时保存和恢复 ScrollView 的滚动位置,您可以执行以下操作:

    在onSaveInstanceState方法中保存当前位置:

    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putIntArray("SCROLL_POSITION",
                new int[]{ mScrollView.getScrollX(), mScrollView.getScrollY()});
    }
    

    然后在 onRestoreInstanceState 方法中恢复位置,注意我们需要向 ScrollView 发布一个 runnable 才能让它工作:

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

    【讨论】:

    • 我的活动没有重新创建仍然滚动视图位置正在改变
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2014-05-14
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多