我在屏幕上横向布置了3个视图(固定大小的图片和两个单行文本视图:leftTextView
和rightTextView
),我试图让rightTextView
紧贴着leftTextView
,但如果两个标签的宽度超过屏幕大小,则截断leftTextiew
。
期望功能示例:
|img|leftText|rightText| ||(end of screen)
|img|leftTextMedium|rightText| ||
|img|leftTextTooLongSoTrunc...|rightText||
实际上正在发生的事情:
|img|leftText|rightText| ||(end of screen)
|img|leftTextPrettyLongButNotHuge|rightT||
|img|leftTextWhichIsIncrediblyLongBlahBl||
如果两个文本视图的大小都超过了视图的宽度,那么即使我在leftTextView
上设置了android:ellipsize="end"
,rightTextView
也可能被挤压到非常小的大小以腾出空间。
有没有一种方法可以使leftTextView
具有“截断优先级”,即如果它会导致其他视图无法适应,则应该将其截断?或者,我可以将rightTextView
设置为“压缩阻力”,以防止它被挤压以腾出空间给leftTextView
?以下是我的XML示例:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/fixedWidthImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/leftTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/fixedWidthImage"
android:layout_toRightOf="@id/fixedWidthImage"
android:maxLines="1"
android:textSize="18sp"
android:ellipsize="end" />
<TextView
android:id="@+id/rightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/leftTextView"
android:layout_toRightOf="@+id/leftTextView"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:maxLines="1"
android:textSize="12sp" />
</RelativeLayout>
我尝试过的事情:
- 在
leftTextView
中添加toStartOf
/toLeftOf
到rightTextView
(导致应用程序崩溃)。 与其将
rightTextView
对齐到leftTextView
的末尾/右侧,不如将其翻转并将leftTextView
对齐到rightTextView
的开始/左侧。 这会导致rightTextView
锚定在屏幕末尾,而不是直接在leftTextView
的右侧。 以下是最终效果的示例:|img|leftText |rightText|| |img|leftTextMedium |rightText|| |img|leftTextTooLongSoTrunc...|rightText||
即使我设置
android:minWidth="25dp"
以确保至少部分rightTextView
是可见的(我不想这样做,因为这个文本长度是可变的),它仍然会压缩宽度以腾出leftTextView
的空间。- 根据Emanuel Moecklin的回答,我尝试将其包装在一个
LinearLayout
中,并在leftTextView
上设置权重。结果在视觉上与我在#2中尝试的相同。