2012-02-05 7 views
52

Co mam teraz to ListView elementów TextView. każdy element TextView wyświetla tekst (długość tekstu zmienia się od 12 słów do 100+). Chcę, aby te TextView wyświetlały część tekstu (powiedzmy 20 słów lub około 170 znaków).Czy mogę ograniczyć liczbę znaków w TextView?

Jak ograniczyć widok tekstu do ustalonej liczby znaków?

Odpowiedz

120

Oto przykład. Ograniczam rozmiar atrybutu maxLength, ograniczam go do pojedynczej linii z atrybutem maxLines, a następnie użyj ellipsize = end, aby dodać "..." automatycznie na końcu linii, która została odcięta.

<TextView 
    android:id="@+id/secondLineTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxLines="1" 
    android:maxLength="10" 
    android:ellipsize="end"/> 
+3

Co to jest "ellipsize = marquee"? – iTurki

+1

"następnie użyj" ellipsize = marquee ", aby automatycznie dodać" ... "na końcu każdej linii" – Booger

+0

Brzmi obiecująco. Dam temu szansę. – iTurki

-5

można rozszerzyć klasę TextView i zastąpić funkcję setText(). Ta funkcja służy do sprawdzania długości tekstu lub słów.

+0

Lepiej niż zliczanie długości tekstu lub słowa "słowo" lepiej byłoby użyć atrybutu "maxLines" wraz z atrybutem "elipsy", aby uzyskać pożądany efekt. – kapilgm

3

skorzystać z poniższego kodu w TextView

android:maxLength="65" 

Ciesz się ...

4

jeśli nie jesteś zainteresowany rozwiązaniami xml może można to zrobić:

String s="Hello world"; 
Textview someTextView; 
someTextView.setText(getSafeSubstring(s, 5)); 
//the text of someTextView will be Hello 

...

public String getSafeSubstring(String s, int maxLength){ 
    if(!TextUtils.isEmpty(s)){ 
    if(s.length() >= maxLength){ 
     return s.substring(0, maxLength); 
    } 
    } 
    return s; 
}