为了确保问题不在我自己的代码中,我用非常基本的MainActivity.kt
创建了一个新的空项目:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// enable full screen:
// https://developer.android.com/jetpack/compose/layouts/insets#insets-setup
enableEdgeToEdge()
// enable immersive mode:
// https://developer.android.com/develop/ui/views/layout/immersive
// WindowInsetsControllerCompat(window, window.peekDecorView()).apply {
// hide(WindowInsetsCompat.Type.statusBars())
// systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
// }
setContent {
Box(modifier = Modifier
.fillMaxSize()
.background(Color.Red)) {
Text("Hello")
}
}
}
}
当WindowInsetsControllerCompat
被注释掉时(如上例所示),结果与预期一致-内容被绘制在状态栏和导航栏的后面:
当WindowInsetsControllerCompat
被取消注释时,我希望内容被绘制在状态栏后面,并在状态栏图标隐藏的情况下进行剪切(就像上图一样).相反,我得到的是没有绘制任何内容的黑色区域:
我已经在模拟器和物理设备上证实了这一行为.
我的问题是:使用Jetpack Compose,我如何才能实现这种效果?: