在视图和 Compose 中使用边衬区

如果您的应用同时包含 Compose 和 View 代码,您可能需要明确哪个系统边衬区应该由哪个代码库使用,并确保边衬区被分派到同级视图。

替换默认边衬区

当您的屏幕在同一层级结构中同时包含 Views 和 Compose 代码时,您可能需要替换默认边衬区。在这种情况下,您需要明确哪个代码库应该使用边衬区,哪个应该忽略它们。

例如,如果您的最外层布局是 Android View 布局,您应该在 View 系统中消费边衬区,并让 Compose 忽略它们。或者,如果您的最外层布局是可组合项,您应该在 Compose 中消费边衬区,并相应地填充 AndroidView 可组合项。

默认情况下,每个 ComposeView 都会在 WindowInsetsCompat 消费级别上消耗所有边衬区。要更改此默认行为,请将 AbstractComposeView.consumeWindowInsets 设置为 false

视图的向后兼容边衬区分发

如果您的应用包含 Views 代码,您可能需要确认在运行 Android 10 (API 级别 29) 或更低版本的设备上,边衬区已分派到同级视图。如需了解详情,请参阅全屏显示视图指南

系统栏图标

调用 enableEdgeToEdge 可确保在设备主题更改时,系统栏图标颜色会更新。

在全屏显示时,您可能需要手动更新系统栏图标颜色,使其与应用背景形成对比。例如,创建浅色状态栏图标

Kotlin

WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = false

Java

WindowCompat.getInsetsController(window, window.getDecorView())
    .setAppearanceLightStatusBars(false);