如何在textview中的文本末尾显示3个点

时间:2014-02-17 09:57:06

标签: android textview

我知道这个问题被多次询问,我已经完成了所有解决方案,但问题仍然存在。

我希望我的文字长度为50个字符。现在它有2行。

以下是我的所作所为:

 <TextView
            android:id="@+id/notification_Message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/notification_head"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp"
            android:gravity="center"
            android:ellipsize="end"
            android:maxLength="50"
            android:text=" Hello developer. please check this message for long length. max length to 50 characters. "   

            android:textSize="20sp" />

这里的文字只是我添加的示例文字。它没有显示3个点,而是显示最多50个字符的消息。我也试过最大行单行假。但没有积极的结果。 我也不想通过逻辑上添加三个点来以编程方式处理这个事情。

请帮忙

11 个答案:

答案 0 :(得分:74)

为TextView设置预设宽度并添加这些属性(Shout-out to @T-D)

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

maxLines将确保您的文本不会以两行显示,而ellipsize将在最后添加三个点。

旧答案

android:ellipsize="end"
android:singleLine="true"

答案 1 :(得分:28)

对于带点的一行文字,但现在已弃用,所以不再使用android:ellipsize="end" android:maxLines="2"

感谢这篇文章,我发现如果我们有更多的一行,如何在文本结尾后显示点,它对我有效:)

{{1}}

在此发布此答案,因为此处的所有答案均针对单行而非多线

答案 2 :(得分:10)

android:ellipsize仅适用于:

android:singleLine="true"

android:maxLines="#any number#"

android:scrollHorizontally="true"

因为maxLength会截断文本。

因此,如果您只想显示50个字符+点,或者为文本视图设置两行,则必须使用代码管理标签。

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:maxLines="2"
    android:scrollHorizontally="true"
    android:text="Hello developer. please check this message for long length. max length to 50 characters."
    android:textSize="20sp" />

答案 3 :(得分:6)

不推荐使用android:singleLine="true"

更好地使用

<强> android:maxLines="1"

android:ellipsize="end" 在文字末尾添加“...”

答案 4 :(得分:4)

使用singleLine = "true"  对于singleLine的限制文本

答案 5 :(得分:2)

@Lokesh的方法很好。

android:ellipsize="end"
android:maxLines="2"

但是我意识到TextView会被word截断(默认情况下)。显示我们是否有如下文字:

测试long_line_without_any_space_abcdefgh

TextView将显示:

<强> 测试...

我找到了处理这个问题的解决方案,用unicode no-break空格字符替换空格,它使TextView换行而不是单词:

yourString.replace(" ", "\u00A0");

结果:

测试long_line_without_any_space_abc ...

答案 6 :(得分:1)

创建自定义TextView:

<com.xyz.CustomizedTextViewName
        android:id="@+id/app_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:ellipsize="end"
        android:singleLine="true"
        android:maxEms="10"

        app:typeface="roboto_bold"/>

答案 7 :(得分:1)

这就是你想要的答案:

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="wrap_content"
        android:text="Title"
        android:maxLines="1"
        android:ellipsize="end"
        android:maxWidth="195dp"
        android:textColor="@color/white"
        android:textSize="14dp"
        android:gravity="center"
        />

答案 8 :(得分:0)

<TextView
            android:id="@+id/txt__customizer_item"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:gravity="center"
            android:paddingRight="20dp"
            android:singleLine="true"
            android:text=" Hello developer. please check this message for long length. max length to 50 characters. "
            android:textAppearance="@android:style/TextAppearance.Medium"
            android:textColor="@color/light_blue"
            android:textSize="20sp" />

这适用于me.give填充从右侧。它将自动显示...

答案 9 :(得分:0)

你可以通过xml

来做到这一点
<TextView 
    android:id="@+id/textview"
    android:maxLines="1" // or any number of lines you want
    android:ellipsize="end" />

答案 10 :(得分:0)

如果在 xml 中展示singleLine="true",您仍然希望使用单行行为,那么请在代码中使用tv.setSingleLine(true);方法。