【发布时间】:2016-12-16 01:42:15
【问题描述】:
我在屏幕上水平放置 3 个视图(固定大小的图像和 2 个单行文本视图: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||
目前,如果两个文本视图的大小超过视图的宽度,rightTextView 最终会被压扁以腾出空间,即使我在 leftTextView 上设置了android:ellipsize="end"。
有没有办法让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/toLeftOfrightTextView(使应用程序崩溃) -
不要将
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 中尝试的相同。
【问题讨论】:
-
在我为重复标记辩护时,在我问我的时候,其他问题没有答案。此外,它的标题很糟糕,这可能是我一开始没有意识到它存在的原因。
标签: android xml textview truncation