我正在构建一个应用程序,并且我正在尝试在应用程序底部设置智能admob横幅。在底部有一个FrameLayout,它将充当广告容器。
我有2个布局文件,一个用于纵向,一个用于横向。肖像一包含一个高度为50dp的FrameLayout,而一个包含32dp的横向(根据谷歌的指南)。
这工作正常,但由于我的活动在onCreate中做了很多事情,我不得不在清单中的活动配置中添加android:configChanges="orientation|screenSize"
,以防止每次设备都调用onCreate旋转。
但是,现在当我的视图旋转时,FrameLayout(adContainer)保持50dp高。
如何强制该特定布局在方向更改时从XML重绘并获得正确的高度?
我已尝试使onConfigurationChanged
中的FrameLayout无效,但我的布局仍然保持50dp高。谢谢
答案 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