【问题标题】:Wrong heigth of view on orientation change方向改变时的视图高度错误
【发布时间】:2017-09-15 14:27:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: android layout android-manifest orientation


    【解决方案1】:

    通过设置configChanges,您是在告诉系统您不想自动切换布局,因此您只能使用一种纵向和横向布局。

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

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

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

    【讨论】:

      【解决方案2】:

      您可以在onConfigurationChanged 中使用setContentView 切换布局

      @Override
      public void onConfigurationChanged(Configuration newConfig) {
          super.onConfigurationChanged(newConfig);
          setContentView(R.layout.activity_main);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-13
        相关资源
        最近更新 更多