64

TextView我的布局中有一个wrap_content位于layout_width. 它限制为最多 15 个字符,所以我使用maxLength.

我需要TextView用 3 个点 (...) 来结束它,只有当我layout_width在 dp 中给出固定大小时才会发生这种情况,这是我不想做的事情。

我知道通过在第 15 个字符之后修剪字符串然后添加 3 个点以编程方式是可能的,但我更喜欢通过 XML 来做到这一点。

知道如何用 3 个点结束文本并将其保留为 wrap_content 吗?

<TextView
    android:id="@+id/inbox_contactName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lines="1"
    android:maxLines="1"
    android:ellipsize="end"
    android:singleLine="true"
    android:maxLength="15"
    android:textColor="#0670b4"
    android:textSize="16sp" />
4

11 回答 11

82

这将解决您的问题,ellipsize在您的 XML 代码中使用属性

android:ellipsize="end" <!-- This makes the magic ... thing -->
android:maxEms="15" <!-- Limit of the Text -->
android:singleLine="true" <!-- In case if you want everything in one line -->

编辑: singleLine弃用。改为使用maxlines="1"

于 2014-01-01T12:19:07.743 回答
22

您不能同时使用两者maxLengthEllipsize尽管您可以定义Maximum EMS参见下面的示例

<TextView
        android:id="@+id/tv_hist_source_lang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxEms="8"
        android:maxLines="1"
        android:text="TextView"
        android:textAppearance="?android:attr/textAppearanceMedium" />

看起来像这样

于 2015-01-07T09:52:51.830 回答
18

我收集(来自评论)@Yaniv 已经使用代码解决了它 - 但这是正确的方法(使用 xml)。可以帮助其他登陆这里的用户。诀窍是同时使用 toleftoftorightof。

<RelativeLayout>
...
 <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:singleLine="true"
        android:layout_toRightOf="@id/some_element1"
        android:layout_toLeftOf="@id/some_element2"/>
...
<RelativeLayout>
于 2013-04-18T17:47:27.940 回答
14

您可以使用

android:maxWidth="100dp"
android:maxLines="1"
android:ellipsize="end"

只有这对我有用。

于 2016-10-20T07:43:07.020 回答
7

用这个android:ellipsize="end"

于 2014-01-01T11:47:58.960 回答
6

最简单的方法之一是添加Right Padding + Ellipsize

<TextView
            android:id="@+id/txtvw_contentcell_subhead"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Polem sampler, Lorem Ipsum golep tolem burop yemit noski"
            android:ellipsize="end"
            android:maxLines="1"
            android:textColor="@color/caption_black_color"
            android:textSize="@dimen/caption_size"
            android:paddingRight="40dp"/>

这是一个带有字符限制的示例字幕文本。 在此处输入图像描述

于 2015-08-22T12:38:43.083 回答
3

尝试了上面的大多数解决方案。使用 maxWidth 是我的关键:

android:maxWidth="100dp"
android:maxLines="1"
android:ellipsize="end"
于 2020-01-25T00:18:35.747 回答
2

非常重要: ellipsize = "end"仅在 maxLength设置为大于一行字符数的值时才有效。wrap_content如果您对齐 TextView 的结尾并开始到任何其他视图,则可以使用。

于 2017-08-23T13:42:35.433 回答
0

我需要使用单选按钮来执行此操作,并且我想将大小限制为一行。当我使用Android:singleline="true"时,单选按钮的复选圈消失了。这是最终起作用的代码:

android:ellipsize="end"
android:maxLines="1"

不需要设置ems。这可能也适用于 TextView 和其他 UI 组件。希望这对某人有所帮助。

于 2014-02-24T12:03:53.220 回答
0

String当它的长度大于 20 时,您可以修改它以添加椭圆大小。

于 2017-04-06T21:39:11.613 回答
-1

从 xml 中删除该行

android:lines="1"
        android:maxLines="1"
于 2013-04-23T13:52:23.863 回答