如果您的应用同时包含 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);