我有这样的布局:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/myLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/text2"
android:text="Left"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="Center"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/text2"
android:text="Right"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
当我将中心和左侧 TextView 的可见性更改为消失时,右侧 TextView 仍然保留在右侧,而不是被拉到左侧,因为它的约束消失了。
知道为什么吗?
最佳答案
我修复了使用障碍物和 app:barrierAllowsGoneWidgets="false"
并设置限制到障碍物的右 View
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/myLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/text2"
android:text="Left"
android:visibility="gone"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="Center"
android:visibility="gone"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideLine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintGuide_percent="0.5"
android:orientation="vertical"/>
<TextView
android:id="@+id/text3"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/barrier"
android:text="Right"
android:textSize="20sp"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierAllowsGoneWidgets="false"
app:constraint_referenced_ids="text1,text2"
app:barrierDirection="end"/>
</androidx.constraintlayout.widget.ConstraintLayout>
关于android - ConstraintLyaout GONE View 不影响约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70006809/