以编程方式更改按钮约束设置和填充空间

时间:2017-12-27 16:30:56

标签: android android-constraintlayout

我正在Android中开发App,现在我有按钮对齐的问题。我需要动态设置约束(我有3个按钮对齐的情况),我有一个ConstraintLayout:

<android.support.constraint.ConstraintLayout
    android:id="@+id/bottomLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/border"
    android:padding="3dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/middleLayoutText"
    app:layout_constraintVertical_chainStyle="packed" >

    <Button
        android:id="@+id/firstButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/secondButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</android.support.constraint.ConstraintLayout>

正如你所看到它包含两个按钮,现在我以编程方式设置它们的对齐方式,例如在第一行旁边的一行中。我正在使用这段代码:

ConstraintLayout layout = (ConstraintLayout) constraintLayout.findViewById(R.id.bottomLayout);
ConstraintSet set = new ConstraintSet();
set.clone(layout);

Button firstButton = (Button) layout.findViewById(R.id.firstButton);
firstButton.setText(buttonsOption.getFirstButton().getContent().getText());

Button secondButton =  (Button) layout.findViewById(R.id.secondButton);
secondButton.setText(buttonsOption.getSecondButton().getContent().getText());

set.connect(firstButton.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT);
set.connect(firstButton.getId(), ConstraintSet.RIGHT, secondButton.getId(), ConstraintSet.LEFT);
set.connect(secondButton.getId(), ConstraintSet.START, firstButton.getId(), ConstraintSet.END);
set.connect(secondButton.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);
set.setHorizontalChainStyle(firstButton.getId(),ConstraintSet.CHAIN_PACKED);
set.setHorizontalChainStyle(secondButton.getId(),ConstraintSet.CHAIN_PACKED);
set.applyTo(layout); 

现在它看起来像这样:image,但是我希望实现第一个调整宽度以填充左侧和右侧第二个空格。我尝试过layout_width的组合,设置每个连接等但仍然没有成功。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用

set.constrainWidth(firstButton.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.constrainWidth(secondButton.getId(), ConstraintSet.MATCH_CONSTRAINT);

您还应该查看ConstraintSet文档here