如何在约束布局撰写中使用偏差

时间:2020-10-02 12:32:46

标签: android android-jetpack-compose

如何在约束布局中的可组合对象上设置layout_constraintHorizo​​ntal_bias道具?这是XML代码:

<TextView
    ...
    tool:layout_constraintStart_toStartOf="parent"
    tool:layout_constraintEnd_toEndOf="parent"
    tool:layout_constraintWidth_max="wrap"
    tool:layout_constraintHorizontal_bias="0"/>

这是我的Jetpack Compose代码现在的样子:

ConstraintLayout(modifier = modifier.fillMaxSize()) {
    val (button1, button2) = createRefs()
    Button(
        onClick = {},
        modifier = Modifier.constrainAs(button1) {
            top.linkTo(parent.top, margin = 16.dp)
        }
    ) {
        Text(text = "Button 1")
    }

    Button(
        onClick = {},
        modifier = Modifier.constrainAs(button2) {
            top.linkTo(button1.bottom, margin = 4.dp)
            start.linkTo(button1.end, margin = 20.dp)
            end.linkTo(parent.end, margin = 20.dp)
            width = Dimension.preferredWrapContent
        }
    ) {
        Text(text = "Button 2")
    }
}

所以我的问题是如何将按钮2的水平偏置设置为0?

2 个答案:

答案 0 :(得分:2)

您必须使用linkTo的{​​{1}}函数,该函数具有更多参数:

ConstrainScope

答案 1 :(得分:1)

我猜想Jetpack Compose中的ConstraintLayout还不能与xml相提并论,并且根本没有偏见。不过,我发现了一种解决方法-您可以创建一个链,而链实际上确实支持偏差(谈论版本1.0.0-alpha04)。

对于您的示例,这样的事情应该可以解决问题:

ConstraintLayout(modifier = modifier.fillMaxSize()) {
    // ...

    createHorizontalChain(button2, chainStyle = ChainStyle.Packed(0F))
}