Android TextView no actualiza su texto cuando textIsSelectable está establecido en true

Me enfrenté a este extraño problema que me causó mucho dolor de cabeza y problemas.

He publicado una aplicación que es un repositorio de varios libros, decidí usar TextView para mostrar el texto de cada capítulo porque se ajusta a los requisitos y es rápido y fácil de usar.

El usuario le pidió que pudiera seleccionar un texto y copiarlo, usé textIsSelectable = true y todo estuvo bien, al día siguiente me llamó para informar que el texto no cambia, abre un capítulo y cambia a otro capítulo pero el texto sigue siendo el mismo.

Pensé que podría ser un problema lógico de mi parte, pero después de un poco de depuración el problema estaba en TextView, cuando establecí textIsSelectable = false; todo estuvo bien.

Para asegurarme de que usé un int estático que se incrementa cada vez que se muestra el texto, el texto permaneció sin cambios.

Entonces, ¿cuál es el problema? ¿Estoy usando TextView de manera incorrecta? O es algún error en el propio TextView?

Aquí está mi diseño (txtBody es el TextView que causa el problema)

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/scrollView" android:fillViewport="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="right"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Title Text" android:id="@+id/txtTitle" android:textSize="24sp" android:padding="5dp" android:gravity="right"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Detail Text" android:id="@+id/txtBody" android:background="@android:color/white" android:gravity="right" android:textColor="@android:color/black" android:textSize="16sp" android:padding="5dp" android:enabled="true" android:textIsSelectable="true" android:selectAllOnFocus="false" android:soundEffectsEnabled="true"/> </LinearLayout> </ScrollView> </FrameLayout> 

Utilizo este código para establecer el texto:

 String body = MainDataManager.getInstance().getChapterBody(book.getTable(), chapter.getId()); updateTextStyle(); txtTitle.setText(chapter.getTitle()); txtBody.setText(body, TextView.BufferType.SPANNABLE); 

Uase invalidate () antes de cambiar el texto de textview.

  String body = MainDataManager.getInstance().getChapterBody(book.getTable(), chapter.getId()); updateTextStyle(); txtTitle.invalidate(); txtTitle.setText(chapter.getTitle()); txtBody.invalidate(); txtBody.setText(body, TextView.BufferType.SPANNABLE); 
  • Manejar enlace textview hacer clic en mi aplicación android
  • Borde de desvanecimiento para TextView verticalmente desplazable
  • Android dibujar círculo alrededor de texto
  • Cómo se desvanecen borde de TextView en Android?
  • Necesita hacer que TextView se desplace verticalmente automáticamente
  • El identificador de recursos no puede ser una cadena vacía (en 'texto' con valor '?') En el atributo textAppearance
  • ¿Cómo cambio el valor TextView dentro del código Java?
  • Vista lateral con XML Android
  • Acceso al texto de Multiline TextView en Android
  • ¿Cómo hacer que el texto se mueva de izquierda a derecha en Android?
  • La vista de texto cambia el color de fondo sin ninguna razón
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.