如何在 Jetpack Compose 中组合多个 Modifier 对象?

时间:2021-05-04 12:39:12

标签: android kotlin android-jetpack android-jetpack-compose

我有一个可组合对象,它将 Modifier 实例传递给其子可组合对象,如下所示:

@Composable
fun MyComposable(
    modifier: Modifier = Modifier,
    content: @Composable BoxScope.() -> Unit,
) {
    Box(
        modifier = modifier.fillMaxWidth(),
        content = content,
    )
}

这将 fillMaxWidth 修饰符添加到 modifier 参数。但是,这不是所需的行为,因为我希望 fillMaxWidth 成为默认宽度,但仍允许调用者覆盖它。

如何组合/合并这两个修饰符,同时将我的本地修饰符设为默认值?

1 个答案:

答案 0 :(得分:2)

使用 Modifier.composed 函数。

@Composable
fun MyComposable(
    modifier: Modifier = Modifier,
    content: @Composable BoxScope.() -> Unit,
) {
    OtherComposable(
        modifier = Modifier.fillMaxWidth().composed { modifier },
        content = content,
    )
}