如何在ConstraintLayout中水平对齐两个TextView而不重叠?

Vis*_* M. 7 android android-constraintlayout

我试图像这样水平对齐两个 TextView: 文本 A 简短正确 当文本 A 很短时,我当前的布局工作正常。但是,当为 textA 设置长字符串时,事情会中断,如下所示。即使文本 A 的结尾被限制在文本 B 的开头,文本 A 和文本 B 也会重叠。 文本 A 长重叠

这是文本 A 很长时的外观。 文本 A 长正确


当前的 XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp">

    <TextView
        android:id="@+id/textA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_gray_background"
        android:ellipsize="end"
        android:lines="1"
        android:padding="4dp"
        android:text="Text A"
        app:layout_constraintEnd_toStartOf="@id/textB"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="4dp"
        android:text="Text B"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

Paw*_*ski 10

您需要将app:layout_constrainedWidth="true"属性添加到您的textA TextView以强制约束,同时将宽度设置为wrap_content

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp">

    <TextView
        android:id="@+id/textA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_gray_background"
        android:ellipsize="end"
        android:lines="1"
        android:padding="4dp"
        android:text="Text A"
        app:layout_constrainedWidth="true"
        app:layout_constraintEnd_toStartOf="@id/textB"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="4dp"
        android:text="Text B"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)