Necesito elipsis de una vista de texto de varias líneas. Mi componente es lo suficientemente grande como para mostrar al menos 4 líneas con la elipse, pero solo se muestran 2 líneas. Traté de cambiar el número mínimo y máximo de filas del componente pero no cambia nada.
163
Respuestas:
Aquí hay una solución al problema. Es una subclase de TextView que realmente funciona para elipsis. El código android-textview-multiline-ellipse enumerado en una respuesta anterior me pareció defectuoso en ciertas circunstancias, además de estar bajo GPL, lo que realmente no funciona para la mayoría de nosotros. Siéntase libre de usar este código libremente y sin atribución, o bajo la licencia de Apache si lo prefiere. Tenga en cuenta que hay un oyente que le notificará cuando el texto se vuelva elipsado, lo cual me pareció bastante útil.
fuente
En mi aplicación, tuve un problema similar: 2 líneas de cadena y, eventualmente, agregué "..." si la cadena era demasiado larga. Usé este código en el archivo xml en la etiqueta textview:
fuente
setText(..., TextView.BufferType.SPANNABLE);
.También me he encontrado con este problema. Hay un error bastante antiguo al respecto que permanece sin respuesta: error 2254
fuente
Prueba esto, funciona para mí, tengo 4 líneas y agrega el "..." al final de la última / cuarta línea. Es lo mismo que la respuesta de la moral, pero tengo singeLine = "false" allí.
fuente
Tengo este problema y, finalmente, construyo una solución corta. Solo tiene que elipsar manualmente la línea que desea, su atributo maxLine cortará su texto.
Este ejemplo corta su texto por 3 líneas como máximo
fuente
Combiné las soluciones de Micah Hainline, Alex Băluț y Paul Imhoff para crear una multilínea elipsis
TextView
que también admiteSpanned
texto.Solo necesita configurar
android:ellipsize
yandroid:maxLines
.Fuente completa: EllipsizingTextView.java
fuente
En mi caso, no hay necesidad de codificar esto en Java. Todo funciona como se esperaba. No hay necesidad de algo así
android:singleLine="false"
.Pero parece haber un error en la vista previa del diseño de Android Studio (v3.0):
Dado Android 7.1.1 en mi dispositivo, esto está funcionando:
fuente
Basado en las soluciones de Micah Hainline y el comentario de alebs, se me ocurrió el siguiente enfoque que funciona con textos distribuidos, de modo que, por ejemplo,
myTextView.setText(Html.fromHtml("<b>Testheader</b> - Testcontent"));
¡funciona! Tenga en cuenta que esto solo funciona enSpanned
este momento. Tal vez podría modificarse para trabajarString
y deSpanned
cualquier manera.fuente
Para aquellos que estén interesados, aquí hay un C # Xamarin. Puerto de Android de la encantadora solución de Micah:
fuente
Para agregar
...
al final de la segunda línea, guardando 1 línea si el texto es corto:fuente
Simplemente agregue código en su actividad
esto agregará puntos suspensivos al final de la vista de texto
fuente
Extienda TextView y anule estos métodos:
fuente
Esta es mi solución puedes descargar demo en mi github. https://github.com/krossford/KrossLib/tree/master/android-project
Esta captura de pantalla fue una demostración que
maxLines = 4
, creo que funciona bien.fuente
Yo he tenido el mismo problema. Lo arreglé simplemente borrando android: ellipsize = "marquee"
fuente
¡El código funcionó muy bien! Puede sobrecargar el método onSizeChanged, si no solo se debe cambiar el texto.
fuente
Este también manejó mi html,
Origen original ENLACE
fuente
La respuesta principal aquí de Micah Hainline funciona muy bien, pero aún mejor es la biblioteca que fue construida a partir de ella por el usuario aleb como él publicó en los comentarios bajo la respuesta de Micah:
Hay algunas características más, si solo necesita TextView, está aquí .
Tal vez esto ayude a otros a encontrarlo más rápido que yo :-)
fuente
Esto es tarde, pero encontré una clase con licencia Apache de Android, que se usa en la aplicación de correo de stock: https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/184ec73/src/com/android/ mail / ui / EllipsizedMultilineTextView.java
fuente
Hay algunos atributos que debe verificar: android: lines, android: minLines, android: maxLines. Para mostrar un máximo de 4 líneas y elipsarlo, solo necesita android: maxLines y android: ellipsize:
fuente
Debe incluir esto en su vista de texto:
Por defecto es cierto. Necesita establecerlo explícitamente como falso.
fuente
code <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="4" android:ellipsize="marquee" android:singleLine="false" android:text="Hai make this a very long string that wraps at least 4 lines!" />