Android 具有 alignParentEnd 和 toEndOf 的相对布局子项
Android Relative layout child with alignParentEnd and toEndOf
我们可以在相对布局中结合 layout_alignParentEnd
和 layout_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
我们可以在相对布局中结合 layout_alignParentEnd
和 layout_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