【问题标题】:How to pass children in Jetpack Compose to a custom composable?如何将 Jetpack Compose 中的子项传递给自定义可组合项?
【发布时间】:2020-12-11 21:41:34
【问题描述】:

我很好奇是否可以将可组合项传递给自定义可组合项块。然后在其定义中呈现。我在想可以采用 vararg + 函数文字方法,但找不到任何信息。

//definition
@Composable
fun Content() {
    Row(modifier = Modifier.fillMaxWidth()) {
        //insert a(), b(), ..., z() so that they render in the row
    }
}

//usage
Content() {
    a()
    b()
    ...
    z()
}

这样的东西已经存在了吗?您可以通过这种方式使用 Jetpack Compose。行实现必须以某种方式处理文本。

Row(){
    Text("a")
    Text("b")
    Text("c")
}

【问题讨论】:

    标签: android android-jetpack-compose


    【解决方案1】:

    看了Row、RowScope的实现,找到了documentation这块。这可以通过以下代码示例来实现。类型为 @Composable() () -> Unitcontent 函数参数被向下传递到行中。

    //definition
    @Composable
    fun MyCustomContent(
        modifier: Modifier = Modifier,
        content: @Composable() () -> Unit
    ) {
        Row(modifier = modifier) {
            content()
        }
    }
    
    //usage
    MyCustomContent() {
        a()
        b()
        z()
    }
    

    【讨论】:

    • "随意命名"——你可能会开始收到 Lint 警告。官方约定是把这个参数命名为content
    猜你喜欢
    • 2022-11-10
    • 2020-06-04
    • 1970-01-01
    • 2021-08-31
    • 2022-09-25
    • 2021-04-15
    • 2021-10-18
    • 2021-09-12
    • 2022-01-21
    相关资源
    最近更新 更多