2011-06-28 15 views
5

Me preguntaba si hay una forma de reemplazar los últimos tres caracteres de un TextView con '...', pero solo si el texto actual sobrepasa el TextView. Tengo que limitar la línea de texto a 1 línea, pero a veces el texto es demasiado largo y me gustaría mostrar '...' al final para indicar que el texto es más largo que lo que se muestra.Indicador de desbordamiento de texto de Android TextView?

Gracias

Respuesta

16

Sí. Puede usar http://developer.android.com/reference/android/widget/TextView.html#attr_android:ellipsize para configurar la visualización de "...".

+0

wow, no sabía de esto. ¡increíble! –

+0

¿Esto no solo asegura que la palabra cortada no se corte en el medio? ¿Cómo podría reemplazar los últimos tres caracteres con el '...'? – Bryan

+1

Si configura líneas máximas en 1 y establece esto en la opción END, creo que tendrá lo que está buscando. La operación alternativa sería muy engorrosa y se basaría en el ancho/alto de la fuente y el número de caracteres, lo que básicamente te obligaría a determinar la longitud probable del texto presentado y luego calcular un corte. Realmente creo que deberías tratar de jugar con esta opción y la gravedad del diseño para ver si puedes encontrar una solución factible antes de atravesar ese agujero de conejo. –

0

Sí, esta es una tarea común llamada truncado. Lo que se necesita para encontrar el máximo de caracteres crees que va a encajar (-3 para los 3 períodos) y luego hacer algo como esto:

int MAX_CHARS = 55; // for example 
TextView tv = (TextView) findViewById(R.id.your_text_view_id); 
if(tv.getText().toString().length >= MAX_CHARS){ 
    tv.setText(tv.getText().toString().substring(0,MAX_CHARS) + "..."); 
} 

recordar algunos personajes son más anchos que otros, dependiendo de la fuente, por lo que podría quiero probar todos los Os mayúsculas cuando trato de averiguar cuáles deberían ser tus MAX_CHARS. (comúnmente uno de los personajes más amplios en mi experiencia)

+0

Primero probaría la forma de @ nick-campion, luego, si no funciona para usted, podría hacer algo como lo anterior. –

+0

android: ellipsize = "end" lo hará por usted. –

+0

@ romain-guy deberías prepararte para tu reunión de esta noche y no rechazarme;) –

Cuestiones relacionadas