在 Android 11 之前,我已经轻松地将我的应用调整为全屏
我的旧手机的摄像头孔和基本按钮位于屏幕区域之外,我的新手机的摄像头孔和基本按钮位于屏幕区域内。
经过很少的设置,我的应用程序在旧手机上全屏显示。
样式.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>
在我的新手机中安卓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 浏览器:
我如何以编程方式执行此操作?
我无法在互联网(和 StackOverflow)中找到解决我的问题的任何线索
我也无法弄清楚如何识别给定手机的屏幕上是否有摄像头孔或者屏幕上是否有基本按钮。看起来它是基于DisplayCutout, WindowInsets
and boundingRectTop
and boundingRectBottom
,但网上并没有真实清晰的使用示例。