Android: ellipsize end – Caracteres adicionales después de la elipse

He configurado una vista de texto de la siguiente manera:

<TextView android:id="@+id/TextView_top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:ellipsize="end" android:maxLines="3" android:textColor="@color/white" android:textIsSelectable="false" android:textSize="14sp" /> 

El interior del texto se establece de forma programática mediante un inflador de diseño, con el texto procedente de un feed XML. He comprobado la fuente y no hay ningún carácter extraviado o saltos de línea.

Prueba de este TextView en un Nexus 4 con Android 4.3 Estoy viendo un comportamiento extraño.

La cadena dentro de los extremos: "" Lorem ipsum dolor sit amet "

En el Nexus esto se está truncando en el lugar correcto, pero en lugar de terminar con el carácter de elipsis como: "dol …", estoy recibiendo "dol … s" con el carácter final medio oscurecido a medida que se rompe a través del margen.

Aumentar el margen me da "ipsum … dol" al final.

He comprobado esto en mis otros dispositivos de la prueba una galaxia S3 que funciona 4.1.2 y un deseo C que funciona 4.0.3 y no está presente en ésos.

¿Alguien más ha visto este comportamiento con ellipsize: end? ¿Alguna sugerencia de lo que podría haber hecho mal o cómo puedo evitar esto?

A través de una gran cantidad de ensayo y error, acabo de encontrar que es causado por tener un carácter '\ n'. Hay algún tipo de problema con ellipsize = "end" cuando hay una nueva línea en algún lugar del texto, incluso si está bien después del elipse.

Haciendo simplemente:

 text = text.replace('\n',' '); 

Arregló este problema para mí

Me enfrenté a un problema similar antes. Recomiendo que no utilice la opción 'ellipsize' con 'maxLines'. Añadir una marca de elipse textView y se puede controlar de forma programada.

Diseño

 <TextView android:id="@+id/multiLineText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="3"/> <TextView android:id="@+id/ellipsizeMarkText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:text="..."/> 

Código

 if(multiLineText.getLineCount() > multiLineText.getMaxLines()) { ellipsizeMarkText.setVisibility(View.VISIBLE); } else { ellipsizeMarkText.setVisibility(View.GONE); } 
  • Android TextView id con una variable?
  • TextView.setTextSize se comporta anormalmente - Cómo establecer el tamaño de texto de textview dinámicamente para diferentes pantallas
  • En un Android TextView, ¿es posible insertar párrafos?
  • Manejar enlace textview hacer clic en mi aplicación android
  • Restablecer Android textview maxlines
  • Android TextView tiene líneas delgadas y finas no deseadas arriba y abajo
  • Espaciado de línea individual para cada línea
  • Android sdk 18 La gravedad de TextView no funciona verticalmente
  • Android.content.ActivityNotFoundException cuando el enlace no contiene http
  • Cómo configurar la parte de la vista de texto se puede hacer clic
  • Evitar que se rompa la palabra en TextView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.