This question already has answers here:
Expand TextView with wrap_content until the neighbor view reaches the end of the parent
(7个答案)
4年前关闭。
我在屏幕上水平放置了3个 View (固定大小的图像和2个单行文本 View :
所需功能的示例:
实际发生的情况:
当前,如果两个文本 View 的大小都超过了 View 的宽度,即使我已经在
有没有一种方法可以使
我尝试过的事情:
在 无需将
即使我设置 根据Emanuel Moecklin的回答,我尝试将其包装在
(7个答案)
4年前关闭。
我在屏幕上水平放置了3个 View (固定大小的图像和2个单行文本 View :
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||
当前,如果两个文本 View 的大小都超过了 View 的宽度,即使我已经在
rightTextView
上设置了android:ellipsize="end"
,leftTextView
最终也被压缩以腾出空间。有没有一种方法可以使
leftTextView
具有“截断优先级”,即如果它会导致其他 View 不合适,则应截断它?或者在另一侧,我可以将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
anchor 定在屏幕的末尾,而不是直接在leftTextView
的右侧。最终结果的示例:|img|leftText |rightText||
|img|leftTextMedium |rightText||
|img|leftTextTooLongSoTrunc...|rightText||
android:minWidth="25dp"
只是为了确保rightTextView
的至少一部分可见(我不想这样做,因为此文本长度是可变的),它仍然最终会压缩宽度以为leftTextView
腾出空间。 LinearLayout
中并在leftTextView
上设置权重。结果在视觉上与我在#2中尝试过的相同。 最佳答案
您可以通过TableLayout
和shrinkColumns
属性来归档此布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Row 1 -->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="1">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:maxLines="1"
android:ellipsize="end"
android:text="leftText"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:maxLines="1"
android:ellipsize="none"
android:text="rightText"/>
</TableRow>
</TableLayout>
<!-- Row 2 -->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="1">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:maxLines="1"
android:ellipsize="end"
android:text="leftTextPrettyLongButNotHuge"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:maxLines="1"
android:ellipsize="none"
android:text="rightText"/>
</TableRow>
</TableLayout>
<!-- Row 3 -->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="1">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:maxLines="1"
android:ellipsize="end"
android:text="leftTextWhichIsIncrediblyLongBlahBlahBlahBlah"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:maxLines="1"
android:ellipsize="none"
android:text="rightText"/>
</TableRow>
</TableLayout>
</LinearLayout>
关于android - Android TextView截断优先级或抗压缩性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38860417/
10-09 06:25