关于方向变化的错误观点

时间:2017-09-15 14:27:17

标签: android layout android-manifest orientation

我正在构建一个应用程序,并且我正在尝试在应用程序底部设置智能admob横幅。在底部有一个FrameLayout,它将充当广告容器。

我有2个布局文件,一个用于纵向,一个用于横向。肖像一包含一个高度为50dp的FrameLayout,而一个包含32dp的横向(根据谷歌的指南)。

这工作正常,但由于我的活动在onCreate中做了很多事情,我不得不在清单中的活动配置中添加android:configChanges="orientation|screenSize",以防止每次设备都调用onCreate旋转。

但是,现在当我的视图旋转时,FrameLayout(adContainer)保持50dp高。

如何强制该特定布局在方向更改时从XML重绘并获得正确的高度?

我已尝试使onConfigurationChanged中的FrameLayout无效,但我的布局仍然保持50dp高。谢谢

2 个答案:

答案 0 :(得分:1)

通过设置class elementsound(models.Model): cdid=models.IntegerField() soundsrc=models.FileField() sounddesc=models.CharField(max_length=20) ,您告诉系统您不想自动切换布局,因此您只能使用一种纵向和横向布局。

您必须修改代码,使其在方向更改时正常工作,或者在旋转设备时手动将包含广告的视图更改为备用尺寸\位置。

最佳解决方案通常是重构代码,以便启用正确的方向过程。即不锁定configChanges属性。

https://developer.android.com/guide/topics/resources/runtime-changes.html

答案 1 :(得分:1)

您可以使用match()中的setContentView来切换布局

onConfigurationChanged