¿Cómo puedo solucionar problemas de visibilidad de html.fromHtml link focus (en ICS y Honeycomb)?

Para obtener un TextView para mostrar (y actuar amistoso con) Html cadenas de mi código se ve algo así como:

 // itemHtml is a String of HTML defined above TextView itemContent = (TextView) findViewById(R.id.itemContent); itemContent.setText(Html.fromHtml(itemHtml)); itemContent.setMovementMethod(LinkMovementMethod.getInstance()); 

Si la cadena Html tiene un vínculo, TextView resulta en vínculos que se pueden hacer clic y se pueden enfocar. Cuando el usuario se centra en un enlace específico (por ejemplo, utilizando el d-pad), el texto del enlace cambia de manera significativa para mostrar que se obtuvo el enfoque.

El problema es que cuando pruebo este mismo patrón usando dispositivos con un pad de d-pad usando Honeycomb (por ejemplo, un Google TV) o Ice Cream Sandwich de Android, el enlace en el texto no muestra ninguna indicación notable de que el enlace tiene foco.

Sé que está consiguiendo el foco, porque cuando usted golpea entonces entra él hace la acción especificada. Incluso puede moverse entre varios enlaces en el texto; Usted acaba de dejar adivinar en qué enlace se encuentra actualmente, lo que resulta en una muy mala experiencia de usuario.

¿Hay algo que estoy haciendo mal? ¿Hay alguna manera de solucionar esto o evitar esto?

Edit : Después de ir un poco loco, finalmente pensé que encontré una solución. Sin embargo, esta solución sólo funciona para Honeycomb . ICS todavía no se resuelve!

A partir de la API 11, Android tiene una nueva configuración en TextViews para definir si el texto es seleccionable.

Puede setTextIsSelectable(true) con setTextIsSelectable(true) en un TextView, o definirlo en el diseño XML android:textIsSelectable="true"

Probablemente es mejor definirlo en XML, de modo que mantener la aplicación hacia atrás-compatible es trivial. Sólo asegúrate de que estás dirigiendo la versión> = 11, o probablemente obtendrá un error.

La forma en que HTML.fromHTML opera es mediante la creación de "spans" con diversos efectos a lo largo de los diversos caracteres de la cadena. Una solución para esto sería utilizar ClickableSpan junto con otro de los CharacterStyles para colorear el texto como clicable. El span anterior le permitirá registrar una devolución de llamada, y esta devolución de llamada podría ser para difundir una intención de ver una url (que abriría un navegador).

Las listas de estado de color del texto para Honeycomb + pueden no establecer el estado enfocado en un color diferente o anular el color para que sea constante.

Compruebe los colores + estilos en your_android_sdk_directory / android-14 / data / res /

Configurar el texto en android: autoLink = "web" también podría ayudar?

La mejor manera de hacerlo es agregar estilo CSS a su html. Sé que soporta Android : selector de hover . Así que tal vez algo como esto:

 String myLink = "<a href=\"http:\/\/google.com\">your link</a>" Html.fromHtml(myLink); 

Y encontrar una manera de incluir los datos CSS a ella: (No estoy seguro de cómo, pero creo que es posible)

 a :hover { color: red; } 

ACTUALIZAR:

Creo que la respuesta de su pregunta está ahí .

  • Cómo obtener GridView desplazarse a la parte superior con el teclado en Android TV
  • ¿Cómo puedo obtener OnClickListener trabajando en una vista personalizada con RelativeLayout?
  • Android TV no está iniciando LAUNCH_LEANBACK Actividad
  • Screensaver muestra al cambiar el tamaño de una ventana con WindowManager
  • Creación de Google TV AVD en ventanas que no detectan x86 Imagen del sistema
  • Cómo puede acceder a la memoria externa en Google TV
  • Cómo utilizar D-pad navegar cambiar entre la fila de listview y sus decendants (soporte de Google-TV)
  • ¿Cómo puedo leer datos de una unidad flash USB?
  • Apertura de vídeo RTSP en VideoView
  • MediaPlayer para Android / VideoView con subtítulos (SRT)
  • Se necesita la guía compleja de diseño de la interfaz de usuario de Android (fragmentos)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.