Android ConstraintLayout查看到其他View的右侧,但保持在父级边界内

时间:2018-04-19 00:20:53

标签: android android-constraintlayout

我在TextViews内有两个ConstraintLayout。一个位于左上方,另一个位于第一个右侧。没什么了不起的。现在,第一个视图可以变宽,将第二个视图推向更右侧。我想要的是第二个视图始终保持在父视图的范围内。

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="20dp"
android:background="#FFFFFF"
android:paddingEnd="20dp">

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text 1"
    android:ellipsize="end"
    android:maxLines="1"
    android:background="#FF0000"/>

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toEndOf="@id/text1"
    android:text="Text 2"
    android:maxLines="1"
    android:background="#00FF00"/>

    ...

我得到的是这样的 enter image description here

但是当我增加文本长度时,第二个视图被推出视图 enter image description here

应该发生的是第二个视图位于父级的右上角,第一个视图占用剩余的可用空间。我有什么方法可以在ConstraintLayout中执行此操作吗?

2 个答案:

答案 0 :(得分:0)

您可以在android:maxWidth中使用固定号码的activity_main.xml,但这并不好,因为每部手机都有不同的屏幕尺寸,所以我建议您使用代码进行设置,您可以{{1 } setMaxWidth跟随text1text2的宽度:

constraintLayout

答案 1 :(得分:0)

我可以看到的在ConstraintLayout中执行此操作的唯一方法是使2个textView成为一个链并将layout_constrainedWidth应用于第一个文本视图,以便第二个文本视图获得优先级:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:background="#fff"
    tools:layout_width="200dp">

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FF0000"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Text 1"
        app:layout_constrainedWidth="true"
        app:layout_constraintEnd_toStartOf="@id/text2"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#00FF00"
        android:maxLines="1"
        android:text="Text 2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/text1" />


</android.support.constraint.ConstraintLayout>

短文本1:

Short Text 1

长文本1:

Long Text 1