Activity "jumps" 当设置 View.SYSTEM_UI_FLAG_FULLSCREEN 时

Activity "jumps" when View.SYSTEM_UI_FLAG_FULLSCREEN is set

我有一个 Activity 图片查看器。当我尝试在根视图上使用标志 View.SYSTEM_UI_FLAG_FULLSCREEN 将其置于全屏模式时,它不仅会隐藏状态栏,还会跳转并且不允许我在 [=17 后面使用 space =].

这是我的问题的简短视频:https://i.imgur.com/kKnsWL0.mp4

在我的 ActivityonCreate 中:

containerView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

我的切换全屏功能:

private fun toggleFullscreen() {
    if (Build.VERSION.SDK_INT >= 21) {
        val fullscreenFlag = View.SYSTEM_UI_FLAG_FULLSCREEN
        if (isFullscreen) {
            containerView.systemUiVisibility = containerView.systemUiVisibility and fullscreenFlag.inv()
        } else {
            containerView.systemUiVisibility = containerView.systemUiVisibility or fullscreenFlag
        }
    }

    if (isFullscreen) {
        toolbar.visible
    } else {
        toolbar.invisible
    }

    isFullscreen = !isFullscreen
}

编辑: 看起来问题出在切口周围,因为我只能在 Google Pixel 3 XL 上看到这些跳跃。魅族PRO6没问题

我找到了解决方案 - 原因是 "notched" 设备。如果您遇到同样的问题,只需将此代码放入您的 Activity:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
    }