Android ScrollView布局不适用于方向更改

时间:2015-10-18 11:31:26

标签: android android-layout layout scrollview

我试图创建一个可以更改屏幕方向的应用程序。在屏幕方向更改时,我希望保存我的数据。我创建了具有相同名称但方向不同的布局。纵向布局是RelativeLayout。横向视图包含一个包含RelativeLayout的ScrollView布局,否则内容完全相同。
当我使用API​​13和+时,我在清单中使用了这一行:

android:configChanges="keyboardHidden|orientation|screenSize"

当我更改方向时,我的数据仍然存在,但ScrollView不起作用,因此我无法访问布局的底部。

如果没有manifest.xml文件中的前一行,则ScrollView可以正常工作(但不保存数据)。我试图将RelativeLayout更改为LinearLayout,因为它是SrollView中使用的最常见的布局,但它没有工作。

你有想法解决这个问题吗? 提前谢谢

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我认为这不是最好的解决方案,我仍然不明白为什么我的问题中的代码不起作用。所以,如果你知道只是发表评论或回答。

我的解决方案是:
1)我删除了清单中的行 2)我实现了这两种方法:

@Override
    protected void onSaveInstanceState(Bundle outState) {
        //data to be saved
        super.onSaveInstanceState(outState);
    }


@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        //retore data
    }

这个解决方案有效,因为我没有很多数据可以保存和恢复。这是避免以前问题的一种方法,而不是解决问题的方法。

此外,此方法可能是一个问题,例如,如果您有一个ImageView应该在开始时被禁用,并在活动剩余的活动后启用。如果在onCreate()的开头使用setEnabled(false)方法,如果更改屏幕方向,即使之前发生更改按钮状态的事件,也会再次发生setEnabled(false)方法。因此,您希望启用按钮,但在屏幕更改后,它将被禁用。 (即使使用此解决方案,也很容易避免此问题,但它不是一个干净的代码)。