将另一个 fun 的可组合项插入主 ConstraintLayout

Insert composable from another fun into main ConstraintLayout

我想在一个乐趣中创建一个自定义可组合项,然后将该可组合项添加到另一个乐趣中,该乐趣包含我的主要 ConstraintLayout 以及布局的所有可组合项。 当我尝试执行此操作时遇到约束问题,我将可组合项放入 ConstraintLayout,但它卡在顶部 left/start 角落。

如何正确地将约束添加到这个构建的可组合项中,该组合项是从另一个乐趣构建到我的主要 ConstraintLayout 乐趣中的?

我的代码:

@Composable
fun MainConstraintLayout() {
    ConstraintLayout {
        val (view1, view2) = createRefs()

        Button(onClick = { /*....*/ },
            modifier = Modifier.constrainAs(view1) {
                top.linkTo(parent.top)
                start.linkTo(parent.start)
                end.linkTo(parent.end)
            }
        ) { Text("view1, correct constraints") }

        // How can I constraint this view (below) to the bottom of view1?
        MyOneComposable()
    }
}

@Composable
fun MyOneComposable() {
    Button(onClick = { /*....*/ }) {
        Text(text = "My one composable button")
    }
}

您需要将 Modifier 参数传递给您的 MyOneComposable:

@Composable
fun MyOneComposable(
    modifier: Modifier,
) {
    Button(onClick = { /*....*/ }, modifier = modifier) {
        Text(text = "My one composable button")
    }
}

因此您可以应用来自 ConstraintLayout:

的 ref 修饰符
MyOneComposable(Modifier.constraintAs(view2) { ... })