【问题标题】:ConstraintLayout to match on siblings view height whichever is higherConstraintLayout 以匹配兄弟视图高度,以较高者为准
【发布时间】:2020-03-24 07:49:33
【问题描述】:

假设我有 2 个视图。那些 2 有一个文本值,可以是 id tvLabel 的视图的高度可以更大,而 clValueContainer 也可以更大。现在我想让 2 个视图跟随它们的高度,以更高的高度复制另一个。对这个有什么想法吗?

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/tvLabel"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:minHeight="@dimen/_35sdp"
        android:layout_marginEnd="@dimen/_1sdp"
        android:paddingTop="@dimen/_12sdp"
        android:paddingBottom="@dimen/_12sdp"
        android:paddingEnd="@dimen/_3sdp"
        android:text="@{label}"
        android:textColor="@color/color_light"
        android:textSize="@dimen/_12ssp"
        android:gravity="start|center"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintEnd_toStartOf="@+id/clValueContainer"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="@+id/clValueContainer"
        tools:ignore="RtlSymmetry"
        tools:text="@string/rental_reversions"/>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/clValueContainer"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/_1sdp"
        android:paddingTop="@dimen/_6sdp"
        android:paddingBottom="@dimen/_6sdp"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintVertical_bias="0.0"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/tvLabel"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="@+id/tvLabel">

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/tvValue"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:minWidth="@dimen/_40sdp"
            android:text="@{score ? @string/provided : @string/missing}"
            android:textColor="@color/color_dark"
            android:textSize="@dimen/_12ssp"
            android:gravity="center_vertical|end"
            android:textAlignment="center"
            android:padding="@dimen/_6sdp"
            app:data="@{score}"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            tools:ignore="RtlSymmetry"
            tools:text="10.0"
            tools:background="@drawable/rounded_green"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

    标签: android android-layout android-constraintlayout androidx


    【解决方案1】:

    终于明白了,下面我会解释我是如何得到它的。请参阅下面的新代码:

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/clRowContainer"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent">
    
            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/tvLabel"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:minHeight="@dimen/_35sdp"
                android:layout_marginEnd="@dimen/_1sdp"
                android:paddingTop="@dimen/_12sdp"
                android:paddingBottom="@dimen/_12sdp"
                android:paddingEnd="@dimen/_3sdp"
                android:text="@{label}"
                android:textColor="@color/color_light"
                android:textSize="@dimen/_12ssp"
                android:gravity="start|center"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintEnd_toStartOf="@+id/clValueContainer"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="@+id/clValueContainer"
                tools:ignore="RtlSymmetry"
                tools:text="@string/rental_reversions"/>
    
            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/clValueContainer"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/_1sdp"
                android:paddingTop="@dimen/_6sdp"
                android:paddingBottom="@dimen/_6sdp"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintVertical_bias="0.0"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/tvLabel"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="@+id/tvLabel">
    
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/tvValue"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:minWidth="@dimen/_40sdp"
                    android:text="@{score ? @string/provided : @string/missing}"
                    android:textColor="@color/color_dark"
                    android:textSize="@dimen/_12ssp"
                    android:gravity="center_vertical|end"
                    android:textAlignment="center"
                    android:padding="@dimen/_6sdp"
                    app:data="@{score}"
                    app:layout_constraintHorizontal_bias="1.0"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    tools:ignore="RtlSymmetry"
                    tools:text="10.0"
                    tools:background="@drawable/rounded_green"/>
    
            </androidx.constraintlayout.widget.ConstraintLayout>
    
        </androidx.constraintlayout.widget.ConstraintLayout>
    

    现在,为了解决这个问题,因为我们要复制它的高度,所以在每个视图底部创建 2 个约束并将它们相互连接。在视图上设置布局高度wrap_content 并完成,它已经修复了。

    如果您想复制其他更大的元素的宽度,这也是相同的,只需将其限制为元素的开始或结束,并将宽度设置为 wrap_content。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多