kotlin 将来自另一个Fun的可组合对象插入主ConstraintLayout

vhmi4jdf  于 2023-03-03  发布在  Kotlin
关注(0)|答案(1)|浏览(84)

我想在一个fun中创建一个自定义可组合对象,然后将该可组合对象添加到另一个fun中,该fun包含我的主ConstraintLayout以及布局的所有可组合对象。当我尝试这样做时,我遇到了约束问题,我将可组合对象放入ConstraintLayout中,但它卡在左上角/开始角。

    • 如何正确地将约束添加到这个构建的可组合对象中,并将来自另一个fun的约束添加到我的主ConstraintLayout fun中?**

我的代码:

@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")
    }
}
oxiaedzo

oxiaedzo1#

您需要将Modifier参数传递到MyOneComposable中:

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

因此,您可以从ConstraintLayout应用ref修改器:

MyOneComposable(Modifier.constrainAs(view2) { ... })

相关问题