这个问题在这里已经有了答案:
android.view.View.systemUiVisibility deprecated. What is the replacement?
(17 个回答)
3个月前关闭。
之前,要启用沉浸式全屏模式,您必须使用 setSystemUiVisibility
,像这样:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
从 API 30 开始,它已被弃用,那么解决方法是什么?
最佳答案
为了兼容性,请使用 WindowCompat
和 WindowInsetsControllerCompat
.您需要升级 androidx.core
的 gradle 依赖项至少到 1.6.0-alpha03
以便支持setSystemBarsBehavior
在 SDK < 30 上。mainContainer
是顶级ConstraintLayout
在我的 Activity 中。
private fun hideSystemUI() {
WindowCompat.setDecorFitsSystemWindows(window, false)
WindowInsetsControllerCompat(window, mainContainer).let { controller ->
controller.hide(WindowInsetsCompat.Type.systemBars())
controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
}
private fun showSystemUI() {
WindowCompat.setDecorFitsSystemWindows(window, true)
WindowInsetsControllerCompat(window, mainContainer).show(WindowInsetsCompat.Type.systemBars())
}
您可以找到有关 WindowInsets
的更多信息通过观看 YouTube video编辑:
我之前没有在此答案中考虑显示切口或显示摄像头。在应用程序主题样式中,我添加了以下内容以在切口上方显示我的内容(在纵向模式下显示在屏幕顶部):
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
您可以通过以下链接阅读更多信息:Display Cutout
关于java - Android 11 上的沉浸式全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62643517/