我正在隐藏并以编程方式显示textview。父约束布局已设置高度'wrap_content'。
但这里的问题是如果最初隐藏textview,即使我将textview可见性设置为VISIBLE,ConstraintLayout titleLayout仍然会折叠并且不显示子textview。
将ConstraintLayout的高度设置为wrap_content非常重要,因此布局可以根据textview内容进行扩展/缩小。
<android.support.constraint.ConstraintLayout
android:paddingTop="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/descriLayout"
android:layout_width="match_parent"
app:layout_constraintTop_toBottomOf="@id/titleLayout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="5dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/box_description"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:text="TextView"
android:textSize="12sp"
android:maxLines="5"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
如果要更改ConstraintLayout中子项的可见性,则必须通过ConstraintSet执行此操作:
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.setVisibility(childView.getId(), View.VISIBLE);
constraintSet.applyTo(constraintLayout);