【发布时间】: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)中找不到任何线索来解决我的问题
我也无法弄清楚如何识别给定的手机屏幕上是否有摄像头孔,或者屏幕上是否有基本按钮。貌似是基于DisplayCutout、WindowInsets和boundingRectTop和boundingRectBottom,但是网上没有真实清晰的使用例子。
【问题讨论】: