将另一个 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) { ... })
我想在一个乐趣中创建一个自定义可组合项,然后将该可组合项添加到另一个乐趣中,该乐趣包含我的主要 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
:
MyOneComposable(Modifier.constraintAs(view2) { ... })