2012-02-05 1 views
52

Quello che ho ora è un ListView di elementi TextView. ogni elemento TextView visualizza un testo (la lunghezza del testo varia da 12 parole a 100+). Quello che voglio è far visualizzare a TextViews una porzione del testo (diciamo 20 parole o circa 170 caratteri).Posso limitare il numero di caratteri di TextView?

Come limitare TextView a un numero fisso di caratteri?

risposta

120

Ecco un esempio. Limito il sizewith all'attributo maxLength, lo limito a una singola riga con l'attributo maxLines, quindi uso ellipsize = end per aggiungere un "..." automaticamente alla fine di qualsiasi linea che è stata tagliata.

<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

Che cos'è 'ellipsize = marquee'? – iTurki

+1

"quindi utilizzare ellipsize = selezione per aggiungere un" ... "automaticamente alla fine di qualsiasi riga" – Booger

+0

Suoni promettenti. Lo proverò. – iTurki

-5

è possibile estendere la classe TextView e sovrascrivere la funzione setText(). In questa funzione si controlla la lunghezza del testo o la parola cound.

+0

Meglio del conteggio della lunghezza del testo o della parola cound un modo migliore sarebbe utilizzare l'attributo "maxLines" insieme all'attributo "ellisse" per ottenere l'effetto desiderato. – kapilgm

3

Usa sottostante Codice in TextView

android:maxLength="65" 

Divertiti ...

4

Se il vostro non è interessato a soluzioni XML forse si può fare questo:

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; 
}