使用 Material 3 窗口边衬区

为便于使用,许多内置的 Material 3 可组合项(androidx.compose.material3)会根据可组合项在应用中放置的位置,按照 Material 规范自行处理窗口边衬区。

窗口边衬区处理可组合项

以下是自动处理窗口边衬区的 Material 组件列表。

应用栏

内容容器

Scaffold

默认情况下,Scaffold 会提供窗口边衬区作为 paddingValues 参数供您使用。Scaffold 不会将窗口边衬区应用于内容;此职责由您承担。例如,若要在 Scaffold 内使用 LazyColumn 消耗这些窗口边衬区

Scaffold { innerPadding ->
    // innerPadding contains inset information for you to use and apply
    LazyColumn(
        // consume insets as scaffold doesn't do it by default
        modifier = Modifier.consumeWindowInsets(innerPadding),
        contentPadding = innerPadding
    ) {
        // ..
    }
}

以下视频展示了在禁用和启用全屏显示模式下,ScaffoldLazyColumn 的效果

覆盖默认窗口边衬区

您可以更改传递给可组合项的 windowInsets 参数,以配置可组合项的行为。此参数可以是要应用的另一种窗口边衬区类型,或者通过传递空实例 WindowInsets(0, 0, 0, 0) 来禁用。

例如,要在 LargeTopAppBar 上禁用窗口边衬区处理,请将 windowInsets 参数设置为空实例

LargeTopAppBar(
    windowInsets = WindowInsets(0, 0, 0, 0),
    title = {
        Text("Hi")
    }
)