2013-03-25 109 views
0

我必须在文本视图中的文本末尾添加3个点。我的textView是一个懒惰的列表适配器,所以内容变化很频繁。只有两行显示在textview中。将三个点添加到动态文本的末尾android

例如假设文本是

abcdefghigdddddddd dddddddddddddddddddd

结果应该是

abcdefghigdddddddd ddddddddddddddddd ...

我知道我应该使用.replace( “... ”“”);

但是如何总是写掉最后的三个字?

我的TextView是如下

holder.title.setText(Html.fromHtml(a.name)); 

其中a.name是要设置的数据。

+0

哈哈哈ppeterka确定 – yakusha 2013-03-25 13:21:01

回答

0

使textView省略号,让android为你自动截断它。

<TextView ....... bla- bla ------- 
      ....................... 
      android:elipsis="true" 
      android:lines="num_of_lines" /> 
+0

肯定,但它并没有给... – yakusha 2013-03-25 13:22:49

+0

省略号与单线/线ATTRS紧密结合。你是否正确使用它们?分享你的xml布局和相关的java代码。 – 2013-03-25 13:25:53

0

要在文本的最后添加3个点,然后

holder.title.setText(Html.fromHtml(a.name+"...")); 

用于删除3字符&加3点..

String a = a.name; 
    a.substring(0, a.length() - 3); 
    holder.title.setText(Html.fromHtml(a.name+"...")); 
3

您可以添加 '省略号' 属性到你的TextView,并且指定文本视图只是一行。它可能看起来像这样:

<TextView 
        android:id="@+id/text_value" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:ellipsize="end" 
        android:maxLines="1" /> 
0

首先你要获取字符串中的文本。然后你获取字符串的长度。然后你可以从上一次获取第三个字符的索引。你可以很容易地用三个最后的字符替换...

所有这些都可以使用Java中的String类的方法完成。

假设您只想显示字符串“raviranjan”中的4个字符,并且希望通过用“...”替换所有其他字符。该做如下: -

String str = "raviranjan"; 
int length = str.length(); 
String subString = str.substring(0, 3); // takes four characters from beginning 
String str2 = subString + "..."; // Add ellipsis 

现在str2的是你想要的字符串....

+0

你可以给我一个例子 – yakusha 2013-03-25 13:28:45

+0

看到我的回答 – 2013-03-25 13:41:18

0

如果你想用省略号来代替多余的字符,你也许能像这样蒙混过关:

String str = "abcdefghigdddddddd dddddddddddddddddddd"; 
String newStr = str.replaceAll("^(.{100})(.*)$","$1..."); 

上面应该匹配前100个字符并将它们放在一个组中,而将其他字符放在另一个组中。结果将是一个由第一组跟随3个点组成的新字符串。

您可以将值100更改为椭圆之前所需的任意数量的字符。

+0

编辑它考虑空间太大,因为有些文字不走“......” – yakusha 2013-03-26 06:18:06

+0

@yakusha在正则表达式中,'.'代表任意字符,所以它应该匹配一个空格('\ s')。在我的例子中,它用100个字符和3个椭圆替代了超过100个字符的任何内容,因此可能会出现这种情况,即您要更改的文本较短。 – npinti 2013-03-26 07:00:33

+0

是的,但是listview中的所有行都不会在第三行的最后三个字符处结束。 – yakusha 2013-03-26 07:06:23

2

只需设置你的TextView属性android:ellipsize="end",你会得到的结果。

+0

是的,但你要如何行的数量很多,显示elipsize只显示2行 – yakusha 2013-03-26 05:16:16

+1

?为你的'TextView'设置'android:maxLines =“2”'。 – GrIsHu 2013-03-26 05:20:01

+0

最多三行 – yakusha 2013-03-26 05:23:34