我在我的应用程序中使用方法 navigationBarsPadding() 将底部填充添加到可组合项,其值与导航栏相同。不幸的是,当我启动应用程序时,这不起作用,直到我旋转屏幕。
确实,如下面的屏幕截图所示,第一次启动时右下角的按钮部分被导航栏隐藏,当我旋转屏幕时,一切都会按预期显示。
还有其他人在使用 Compose 时遇到过同样的行为吗?请问我该如何解决这个问题?
这是主 Activity 的 onCreate() 方法中的代码:
MainTheme() {
Surface(
modifier = modifier
.fillMaxSize()
.navigationBarsPadding()
.background(Color.Transparent)
.border(
width = 0.dp,
color = Color.Transparent,
shape = RectangleShape
),
shape = RectangleShape,
color = Color.Transparent,
contentColor = contentColorFor(Color.Transparent),
tonalElevation = 0.dp,
shadowElevation = 0.dp,
border = null,
) {
....
}
}
使用设备:
配备 Android 12 的三星 Galaxy S10
设置:
Android Studio --> Jellyfish | 2023.3.1 RC
SDK 构建工具 --> 34.0.0
AGP --> 8.4.0-rc02
Kotlin --> 1.9.23
撰写 --> BOM 2024.04.00 |编译器1.5.11
匕首 --> 2.51.1
最小 SDK --> 26
编译SDK --> 34
目标 SDK --> 34
我找到了解决方案!
在 onCreate() 中,我使用 Android enableEdgeToEdge() 函数为我的 ComponentActivity 启用边缘到边缘显示。
之前,这个函数是在super.onCreate(savedInstanceState)之前添加的。将其移至 super.onCreate(savedInstanceState) 之后,现在一切正常。
之前
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
}
现在
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
}