Android 具有 alignParentEnd 和 toEndOf 的相对布局子项

Android Relative layout child with alignParentEnd and toEndOf

我们可以在相对布局中结合 layout_alignParentEndlayout_toEndOf 来对齐一个项目吗?

在要求的输出中,textView 应该与父元素的右端对齐,并且当它增长时,它不应与其前一个元素重叠,而是应该以椭圆形结尾(如 expected_result_2 所示)

我有以下片段,它生成 expected_result_2 而不是 expected_result_1。它不是在父项的末尾对齐,而是在 second_text 旁边对齐,如 actual_result_1 所示。

<RelativeLayout
    android:id="@+id/row_container"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/indicator"
        style="@style/material_icon_style"
        android:layout_width="20dp"
        android:layout_height="24dp"
        android:layout_alignParentStart="true"
        android:scaleType="fitXY"
        android:src="@drawable/ic_attachment"
        android:visibility="invisible"
        tools:visibility="visible"/>

    <TextView
        android:id="@+id/first_text"
        style="@style/list_primary_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="false"
        android:layout_toEndOf="@+id/indicator"
        android:singleLine="true"
        tools:text="Jul 4, 2017"/>

    <TextView
        android:id="@+id/second_text"
        style="@style/list_primary_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_toEndOf="@id/first_text"
        android:singleLine="true"
        android:text="@string/note_draft"
        android:textColor="@color/highlight"
        android:visibility="gone"
        tools:text="DRAFT"
        tools:visibility="visible"/>

    <TextView
        android:id="@+id/last_item"
        style="@style/list_secondary_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@id/second_text"
        android:layout_alignBottom="@id/second_text"
        android:singleLine="true"
        android:visibility="invisible"
        android:ellipsize="end"
        android:paddingStart="10dp"
        tools:text="RIGHT"
        tools:visibility="visible"/>

</RelativeLayout>

actual_result_1 :

expected_result_1 :

expected_result_2 :

我们应该使用 constraintlayout 来获得想要的结果吗?

试试下面的布局。

 <RelativeLayout
    android:id="@+id/row_container"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/indicator"
        android:layout_width="20dp"
        android:layout_height="24dp"
        android:scaleType="fitXY"
        android:src="@mipmap/ic_launcher"
        android:visibility="visible"
        tools:visibility="visible"/>

    <TextView
        android:id="@+id/first_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/indicator"
        android:singleLine="true"
        android:text="Jul 4, 2017"/>

    <TextView
        android:id="@+id/second_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/first_text"
        android:singleLine="true"
        android:text="DRAFT"
        android:layout_marginLeft="10dp"
        tools:text="DRAFT"
        tools:visibility="visible"/>

    <TextView
        android:id="@+id/last_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/second_text"
        android:singleLine="true"
        android:ellipsize="end"
        android:gravity="end"
        android:layout_toRightOf="@+id/second_text"
        android:text="ksljklsjkljl"
        android:layout_alignParentRight="true"
        tools:text="RIGHT"
        tools:visibility="visible"
        />

</RelativeLayout>

在文本视图中使用 android:gravity="end" last_item