繁体   English   中英

android layout-land和onConfigurationChanged

[英]android layout-land and onConfigurationChanged

我是Android的入门者,试图弄清楚如何为纵向和横向屏幕使用不同的布局文件(main.xml)。

我试图将main.xml放入res / layout和res / layout-land中,然后重新构建项目。 但是,这对我不起作用。

然后,我在代码中添加了onConfigurationChanged方法,并将setContextView设置为R.layout.main。 这次我在不同的方向获得了不同的屏幕布局,但是所有功能都丢失了。 一些帖子还说使用onConfigurationChanged方法并不是最好的主意。

那么有人可以帮助我解决这个问题吗?

谢谢,

转到您的AndroidManifest.xml并将此行添加到您的活动标签中:

android:configChanges="orientation"

这告诉Android您希望在方向改变时控制活动状态。 通常,当方向发生变化时,Android实际上会破坏您的活动并再次通过onCreate()重新创建它,因此除非状态保存在onConfigurationChanged()方法中,否则获取的所有数据都会丢失。

Android会自动使用代表您设备当前状态的布局。 对于您的特定项目,设备旋转时应使用layout-land xml文件。 当您覆盖onConfigurationChanged方法并修改清单时,它告诉Android您将自己处理配置更改,我不建议这样做,尤其是当您希望加载新布局时。

这是您需要做的(测试不同的布局)。 将一个名为main的xml文件放入布局文件夹中。 对于布局,只需使用LinearLayout用蓝色背景填充父对象即可。 现在创建一个名为main的xml布局文件,但是将其放在layout-land文件夹下。 在此布局中,使用红色背景。

启动应用程序,旋转设备,您应该会看到背景更改颜色。 这是因为活动被销毁并使用新的布局重新启动。

尝试使用onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()方法来解决您的问题。 您也可以使用jrobinson3k1给定的上述限制。 感谢名单。

暂无
暂无

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

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