【问题标题】:How adjust my app in Android 11 in cell phone screen?如何在手机屏幕上调整我在 Android 11 中的应用程序?
【发布时间】:2022-06-30 21:54:18
【问题描述】:

在 Android 11 之前,我已经轻松地将我的应用调整为全屏

我的旧手机在屏幕区域外有摄像头孔和底座按钮,我的新手机在屏幕内有一个摄像头孔和底座按钮。

通过一些设置,我的应用在旧手机中是全屏的。

Styles.xml

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>   
        <item name="windowNoTitle">true</item>    
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
</style>

AndroidManifest.xml

<application
   ...       
   android:theme="@style/AppTheme.NoActionBar">
</application>

在装有 Android 11 的新手机中,我搜索了很多 Stackoverflow 问题。我尝试了许多不同的解决方案。最后,我在我的应用程序中将以下代码放在OnCreate() 的开头。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
  window.attributes.layoutInDisplayCutoutMode =
      WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    WindowCompat.setDecorFitsSystemWindows(window, false)
 else {
      @Suppress("DEPRECATION")
      window.setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN
      )
    }

我想在基本按钮和摄像头孔附近留一个窄边,比如 Chrome。

但我所能得到的只是应用程序和按钮之间(向下)以及应用程序和摄像头孔之间(向上)之间的很大距离:

但我想要一个窄边距:

类似于 Android 的 Chrome 浏览器:

如何以编程方式执行此操作?

我在 Internet(和 StackOverflow)中找不到任何线索来解决我的问题

我也无法弄清楚如何识别给定的手机屏幕上是否有摄像头孔,或者屏幕上是否有基本按钮。貌似是基于DisplayCutoutWindowInsetsboundingRectTopboundingRectBottom,但是网上没有真实清晰的使用例子。

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    答案会让很多人感到惊讶,就像我自己一样。经过数月的尝试和错误,以及受挫的帮助请求,直到我自己找到了解决方案。

    它简单得令人不安,但同时也是世界上最困难的事情,包括尝试它的勇气

    秘诀是:

            <meta-data android:name="android.max_aspect" android:value="2.4"
    

    根据我在问题中写的内容,您确实需要更改 Android 的标准样式之一

    所以在styles.xml:

    <style name="AppTheme"> parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="windowNoTitle">true</item>   
        <item name="android:windowFullscreen">true</item>
    </style>
    

    AndroidManifest.xml(应用程序部分)包括

            android:theme="@style/AppTheme">
            <meta-data android:name="android.max_aspect" android:value="2.4"
    

    这一切……

    我在这个主题上找到的唯一远程参考是在 2017 年开发者官方博客上的 this 帖子。

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 2016-06-26
      相关资源
      最近更新 更多