Android TagHandler sin efecto en las etiquetas estándar
Estoy utilizando un TextView para mostrar una cadena HTML como:
"HTML de prueba <a href = \" www.type1.com \ "> link1 </ a> <a href = \" www.type2.com \ "> link2 </ a>"
- TextView onClick () no funciona
- ¿Cómo puedo reducir el espaciado entre texto en mi diseño de Android?
- Cómo hacer que la vista de texto parpadee
- ¿Puedo limitar el número de caracteres de TextView?
- Android: ¿Cómo puedo actualizar mi textView en un fragmento
Como ven, hay dos tipos diferentes de etiquetas que necesito manejar, así que tengo que ser capaz de manejar los dos tipos diferentes de etiquetas y leer el atributo href.
He intentado usar Html.TagHandler:
private class MyTagHandler implements Html.TagHandler { @Override public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) { Toast.makeText(getContext(), tag, Toast.LENGTH_LONG).show(); } }
Sin embargo, el handleTag no se llama en la etiqueta <a>. Hice pruebas y averiguar que sólo tiene efecto en las etiquetas personalizadas. ¿Es posible manejar también las etiquetas stardard?
- Cómo permitir al usuario para seleccionar un rango de texto en un TextView (similar a EditText)
- ¿Cómo manejar los idiomas RTL en las versiones anteriores a la versión 4.2 de Android?
- ImageSpan.ALIGN_BASELINE cuando TextView tiene lineSpacing
- Eliminar subrayado de AutoCompleteTextView a través de xml
- Android: cómo dar bulletpoints, salto de línea al texto en textview
- Utilice la imagen GIF en ImageSpan con un EditText
- Programáticamente establecido izquierda dibujable en un TextView
- TextView que está vinculado y seleccionable?
El objetivo de una implementación personalizada de Html.TagHandler es proporcionar el manejo de las etiquetas que no son manejadas por el framework android. Así que para hacer lo que quieres, una solución es reemplazar todas las etiquetas que quieres manejar con otra etiqueta que sabes que el framework no manejará, por lo que entrará en tu implementación. Por ejemplo, podría hacer un método como éste para preparar su html:
public string prepareHTMLForTagHandling(string htmlSource) { if (htmlSource == null || htmlSource == "") return null; return htmlSource.replace("<a", "<acustomlink") .replace("</a>", "<acustomlink>"); }
Y luego utilizarlo como:
Html.fromHtml(prepareHTMLForTagHandling(myHtml), null, myHtmlCustomTagHandler);
Por último, en la implementación del controlador de etiquetas personalizadas, maneja "acustomlink" como una etiqueta en lugar de "a".
Espero eso ayude.
- No se puede ejecutar dex: Múltiples archivos dex definen Landroid / support / v7 / util / ThreadUtil $ MainThreadCallback;
- Android ActionBar no muestra el icono de la aplicación después de setDisplayHomeAsUpEnabled (true)