我是Android上的首发,并试图弄清楚如何使用不同的布局文件(main.xml)进行纵向和横向屏幕。
我尝试将main.xml放在res / layout和res / layout-land中,然后重建项目。但是,这对我不起作用。
然后我在代码中添加了onConfigurationChanged方法,并将setContextView添加到R.layout.main。这次我在不同的方向上获得了不同的屏幕布局,但所有功能都丢失了。有些帖子还说使用onConfigurationChanged方法并不是最好的主意。
那么有人可以帮我解决这个问题吗?
谢谢,
答案 0 :(得分:2)
转到AndroidManifest.xml并将此行添加到您的活动代码中:
android:configChanges="orientation"
这告诉Android您希望在方向更改时控制活动的状态。通常,当有方向更改时,Android实际上会破坏您的活动并再次通过onCreate()
重新创建它,因此除非状态保存在onConfigurationChanged()
方法中,否则获取的任何数据都将丢失。 / p>
答案 1 :(得分:1)
Android会自动使用代表您设备当前状态的布局。对于您的特定项目,应在设备旋转时使用layout-land xml文件。当你覆盖onConfigurationChanged方法并修改你的清单时,它告诉Android你将自己处理配置更改,我不推荐,特别是如果你想要加载一个新的布局。
这是您需要做的(测试不同的布局)。在layouts文件夹中放入一个名为main的xml文件。对于布局,只需使用以蓝色背景填充父级的LinearLayout。现在创建一个名为main的xml布局文件,但将其放在layout-land文件夹下。在此布局中,使用红色背景。
启动应用程序,旋转设备,您应该看到背景更改颜色。这是因为活动正在被新布局破坏并重新启动。
答案 2 :(得分:0)
尝试使用onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()方法来解决您的问题。 你也可以使用jrobinson3k1给出的上述sloution。 感谢名单。