2013-03-25 102 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