val decorView = window.decorView decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE window.statusBarColor = Color.TRANSPARENT 这段代码已被弃用,请帮我换成新的可用写法
时间: 2024-02-13 16:05:14 浏览: 142
这段代码被弃用的原因是因为Android 11及以上版本已经更改了状态栏和导航栏的交互方式。下面是新的可用写法:
```kotlin
// 隐藏状态栏和导航栏
window.setDecorFitsSystemWindows(false)
window.insetsController?.let {
it.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
// 设置透明状态栏和导航栏
window.statusBarColor = Color.TRANSPARENT
window.navigationBarColor = Color.TRANSPARENT
```
需要注意的是,上述代码需要在Android 11及以上版本中运行,否则会出现编译错误。如果需要兼容旧版本的Android系统,可以使用以下代码:
```kotlin
// 隐藏状态栏和导航栏
decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
// 设置透明状态栏和导航栏
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION)
```
阅读全文