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
在我的 Activity
的 onCreate
中:
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
}
我有一个 Activity
图片查看器。当我尝试在根视图上使用标志 View.SYSTEM_UI_FLAG_FULLSCREEN
将其置于全屏模式时,它不仅会隐藏状态栏,还会跳转并且不允许我在 [=17 后面使用 space =].
这是我的问题的简短视频:https://i.imgur.com/kKnsWL0.mp4
在我的 Activity
的 onCreate
中:
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
}