android - ConstraintLyaout GONE View 不影响约束

标签 android android-constraintlayout

我有这样的布局:

<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/

相关文章:

android - Tesseract OCR 上的数字编号

android - 获取图片消息到 C++ 程序

java - 初始化 reycler View 时出现 NullPointerException

android - 如何在android中的ConstraintLayout中重叠元素?

android - Android Studio 中的 ConstraintLayout 不 match_parent

android - 布局在某些设备上看起来很乱

android - WorkManager beginUniqueWork 没有按预期工作

java - Java Android DC音频输出

android - 使用 ConstraintLayout 将 ImageView 与 TextView 基线对齐

android - ConstraintLayout 以编程方式加权链