Android 如何在文本视图中显示文本末尾的3个点

Android 如何在文本视图中显示文本末尾的3个点,android,textview,Android,Textview,我知道这个问题被问了很多次,我已经讨论了所有的解决方案,但问题仍然是一样的 我希望我的文本长度为50个字符。现在有两行 以下是我所做的: <TextView android:id="@+id/notification_Message" android:layout_width="wrap_content" android:layout_height="wrap_content" android

我知道这个问题被问了很多次,我已经讨论了所有的解决方案,但问题仍然是一样的

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

以下是我所做的:

 <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个字符的信息。我还尝试了最大行数单行错误。但没有积极的结果。 我也不想通过逻辑地添加三个点来以编程方式处理这件事

请帮助使用
singleLine=“true”
用于按单行限制文本


<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" />

这对我有效。从右侧填充。它将自动显示…

android:ellipsize
仅适用于:

android:singleLine="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" />

为文本视图预设宽度并添加这些属性(向@T-D大声呼喊)

最大线将确保文本不会显示为两行,省略号将在末尾添加三个点

旧答案


创建自定义文本视图:

<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"/>

用于带点的单行文本,但现在它已被弃用,因此不再使用
单行

多亏了这篇文章,我发现如果我们有更多的一行,如何在文本结尾后显示点,这对我来说很有用:)


在这里发布这个答案,因为这里所有的答案都是针对单行的,而不是针对多行的

我也在努力解决这个问题
android:maxLength
没有任何效果,所以我玩了
android:maxWidth
,效果很好

在下面签出我的代码片段

<TextView
        android:id="@+id/tv_comment_author"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxWidth="120dp"
        android:singleLine="true"
        android:ellipsize="end"
        android:text="@string/dummy_text"/>

采用@Lokesh的方法效果很好

android:ellipsize="end"
android:maxLines="2"
但我意识到一个问题,TextView将被word截断(默认情况下)。显示我们是否有如下文本:

在没有任何空间的情况下测试长线

文本视图将显示:

测试…

我找到了解决这个问题的方法,用unicode无中断空格字符替换空格,它使TextView以字符而不是文字换行:

yourString.replace(" ", "\u00A0");
结果是:


在没有任何空间的情况下测试长线…

这是您想要的答案:

    <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"
        />

android:singleLine=“true”已被弃用

更好地利用

android:maxLines=“1”

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

android:ellipsize=“end”
要在文本末尾添加“…”,您可以通过
xml
实现:

<TextView 
    android:id="@+id/textview"
    android:maxLines="1" // or any number of lines you want
    android:ellipsize="end" />


如果
singleLine=“true”
xml中被删除,您仍然希望使用单行行为,然后使用
tv.setSingleLine(true)代码中的方法。

50个字符不能用单行表示问题是…singleLine已被弃用,但当我不久前尝试使用singleLine=true时,我找不到一种方法使ellipsize在不使用singleLine=true的情况下工作。如果您需要精确显示50个字符,你应该在最后加上3个点,并通过代码将限制改为53。你可以定期阅读,我可以发誓我在文档中读到了,但这里不再说明。这是以前的文字:@PankajKumar Right,应该先检查文档。但是你知道关于
singleLine
被弃用的谣言是从哪里来的吗?另外,据我记忆所及,它在IDE中被标记为不推荐使用。亲爱的,问题是一行不能包含50个字符。那么,我们如何将单行设置为true呢?那么,您必须使用两行。如果我希望最大字符数为50Recap,该怎么办:-文本视图必须独立显示50个字符,屏幕为纵向或横向。-无论文本是2行还是3行-如果文本长度超过50个字符,则必须显示点-如果使用省略号最大长度剪切点,我看到的唯一方式是:
String toCut=“你好,开发者。请检查此消息的长度。最大长度为50个字符。”;如果(toCut.length()>50){toCut=toCut.substring(0,50)+'…';}textView.setText(toCut)我知道这是可以做到的。但稍后我需要从这个文本视图中获取文本。然后,它会为ME创建一个混乱,你可以用StTAG(整篇文本)和稍后的GETAG()来存储整个文本,它不会在我的用例中滚动,如何在没有空白的VyyLang-In单词中间填充椭圆大小。它似乎在空白处而不是myVeryLongWord处中断…
android:singleLine=“true”
现在已被弃用。改用android:maxLines=“1”
。我发现在android 4.4.2中,它只显示一个点。这是正常的还是什么
yourString.replace(" ", "\u00A0");
    <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"
        />
<TextView 
    android:id="@+id/textview"
    android:maxLines="1" // or any number of lines you want
    android:ellipsize="end" />