Android Compose navigationBarsPadding() 在首次启动时不起作用

问题描述 投票:0回答:1

我在我的应用程序中使用方法 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

android padding insets
1个回答
0
投票

我找到了解决方案!

在 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()
}
© www.soinside.com 2019 - 2024. All rights reserved.