约束布局以编程方式更改约束

时间:2017-08-02 07:34:28

标签: android android-constraintlayout

我有一个textview:

<TextView
    android:id="@+id/textViewChat"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"

    android:layout_marginRight="16dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="26dp"
    android:background="@drawable/rounded_corner"
    android:fontFamily="serif"
    android:text="I have one listView "
    android:textAlignment="textStart"
    android:textColor="@color/bb_darkBackgroundColor"
    android:textSize="15sp"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintLeft_toRightOf="@+id/imageViewChat"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintWidth_default="wrap"/>

我想要的是以编程方式删除最后一行,因为有些时候我不需要它。

1 个答案:

答案 0 :(得分:1)

我的理解是,您希望将app:layout_constraintWidth_default="wrap"更改为默认的app:layout_constraintWidth_default="spread"

以下代码显示了如何使用ConstraintSet执行此操作。 XML就是您所呈现的内容,但ConstraintLayout已被赋予constraintLayout的ID。

此代码获取布局中存在的所有约束,进行所需的更改并重新应用更改。

protected void onCreate(Bundle savedInstanceState) {
    final ConstraintSet cs = new ConstraintSet();
    ConstraintLayout layout;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    layout = (ConstraintLayout) findViewById(R.id.constraintLayout);
    cs.clone(this, R.layout.activity_main);
    cs.constrainDefaultWidth(R.id.textViewChat, ConstraintSet.MATCH_CONSTRAINT_SPREAD);
    cs.applyTo(layout);
}