首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调整我在Android 11手机屏幕上的应用程序?

如何调整我在Android 11手机屏幕上的应用程序?
EN

Stack Overflow用户
提问于 2022-02-01 22:00:49
回答 1查看 152关注 0票数 1

在Android 11之前,我已经很容易地将我的应用程序调整为全屏

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

由于设置不多,我的应用程序在旧手机上是全屏的。

Styles.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
<application
   ...       
   android:theme="@style/AppTheme.NoActionBar">
</application>

在我使用安卓11的新手机中,我搜索了许多Stackoverflow问题。我尝试过很多不同的解决方案。最后,我在OnCreate()的开头输入了下面的代码。

代码语言:javascript
复制
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浏览器:

我怎样才能用程序来完成这个任务呢?

我在互联网(和StackOverflow)上找不到一个关于我的问题的线索。

我也无法确定如何识别给定的手机是否在屏幕上有摄像头孔,或者它是否有屏幕上的基本按钮。看起来它是基于DisplayCutoutWindowInsetsboundingRectTopboundingRectBottom的,但在互联网上并没有真正的、明确的使用实例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-30 13:54:18

这个答案会让许多人感到惊讶,就像它让我感到惊讶一样。这是几个月,几个月的尝试和错误,失败的帮助请求,直到我自己找到解决方案。

这是一个令人不安的简单,但同时,它是银河系中最复杂的事情,包括大胆尝试它。

魔法和秘密线是:

代码语言:javascript
复制
      <meta-data android:name="android.max_aspect" android:value="2.4"/>

2.4是屏幕上应用程序区域允许的最大screen height / screen width

如果省略这条语句,系统仍然会假设,其最大高宽比为1.86。

如果今天很多设备的screen height /screen width比率都大于1.86,我不知道为什么系统会假设默认值这么低。

根据我在问题中所写的,我们确实需要改变Android的标准样式之一

所以在styles.xml

代码语言:javascript
复制
<style name="AppTheme"> parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="windowNoTitle">true</item>   
    <item name="android:windowFullscreen">true</item>
</style>

AndroidManifest.xml中包括

代码语言:javascript
复制
  <application
    ... 
    android:theme="@style/AppTheme">
    <meta-data android:name="android.max_aspect" android:value="2.4"/>
    ...  
   <\application>  

这都是..。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70948103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档