2012-02-05 17 views
52

Lo que tengo ahora es un ListView de elementos TextView. cada elemento TextView muestra un texto (la longitud del texto varía de 12 a 100 palabras). Lo que quiero es que estas TextViews muestren una parte del texto (digamos 20 palabras o aproximadamente 170 caracteres).¿Puedo limitar el número de caracteres de TextView?

¿Cómo limitar el TextView a un número fijo de caracteres?

Respuesta

120

Aquí hay un ejemplo. Limito el tamaño con el atributo maxLength, lo limito a una sola línea con el atributo maxLines, luego uso ellipsize = end para agregar un "..." automáticamente al final de cualquier línea que haya sido cortada.

<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

¿Qué es 'ellipsize = marquee'? – iTurki

+1

"luego use el recuadro elipse = marquee para agregar un" ... "automáticamente al final de cualquier línea" – Booger

+0

Suena prometedor. Lo probaré. – iTurki

-5

puede extender la clase TextView y sobrescribir la función setText(). En esta función, verifica la longitud del texto o la palabra cound.

+0

Mejor que contar la longitud del texto o la palabra cound, una mejor manera sería usar el atributo "maxLines" junto con el atributo "ellipsize" para obtener el efecto deseado. – kapilgm

3

uso por debajo de código en TextView

android:maxLength="65" 

Disfruta ...

4

Si no estás interesado en soluciones XML tal vez usted puede hacer esto:

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