Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: conversión entre cadenas, SpannedStrings y Spannablestrings

Tengo un recurso de cadena llamado "foo". Puede ser una cadena simple … o puede contener HTML. Esto puede cambiar con el tiempo: Debería poder encajarlo como al menos un SpannableString inmediatamente después de leer si es HTML o no ( pero ¿cómo ?? )

Quiero obtener ese CharSequence sin procesar y primero ser capaz de mostrarlo tal cual (los caracteres exactos, no la "interpretación" de Android). Ahora mismo no puedo hacer eso … toString () decide arrancar las partes que no piensa que quiero ver.

  • MathML y ​​Java
  • ¿Se puede usar la etiqueta de combinación con fragmentos?
  • Fragmento de la animación de transacciones: inserte y deslice hacia fuera
  • Cómo recuperar Twitter y Facebook Autenticación y Token a través de las clases de Administrador de cuentas de Android
  • Android: Colorear parte de una cadena usando TextView.setText ()?
  • ¿FFMpeg jni en Android?
  • A continuación, me gustaría ser capaz de crear una SpannableString de esta y otras cadenas o SpannableStrings a través de la concatenación utilizando algún método (ninguno de los normales trabajo). Me gustaría entonces utilizar SpannableString para mostrar el texto con formato HTML en un TextView.

    Esto no debería ser difícil, pero claramente no lo estoy haciendo bien (hay muy poca información sobre esto que he encontrado hasta ahora). Seguramente hay una manera de interconvertir con precisión entre entre las cadenas, SpannedStrings e incluso Spannablestrings, sin perder las anotaciones en el camino?

    Tenga en cuenta que ya he jugado con el Linkify algo roto, pero quiero un mejor control sobre el proceso (no colgando sin formato "/" s, hrefs adecuado, etc) Puedo obtener todo esto para trabajar SI me quedo en HTML en absoluto Pasos, aunque no puedo concatenar nada.

    Editar 1: He aprendido que puedo usar lo siguiente para asegurarme siempre de que consiga mi cadena sin procesar (en lugar de lo que Android decida que piensa que es realmente CharSequence). Bueno … ahora, ¿cómo convencer a esto en una SpannableString?

    <string name="foo"><![CDATA[ <b>Some bold</b> ]]> </string> 

    Editar 2: No estoy seguro de por qué esto no funcionó antes, pero … si foo1 y foo2 son cadenas marcadas como arriba (como CDATA), entonces uno puede aparentemente hacer esto:

     String foo1 = (String)getResources().getText(R.string.foo1); String foo2 = (String)getResources().getText(R.string.foo2); SpannedString bar = new SpannedString(Html.fromHtml(foo1+foo2)); 

    Curioso: ¿hay una solución más directa que esto? ¿Es este negocio CDATA realmente necesario? Parece enrevesado (pero no tan complicado como nunca saber qué tipo de recurso será … String, Spannable, etc.)

  • Guardar mapa de bits en Android como JPEG en almacenamiento externo en una carpeta
  • La altura de ListView llena toda la pantalla, aunque se define como wrap_content
  • Android: obtener animaciones de transición de actividad por defecto del sistema
  • No se puede abrir el puerto del depurador: java.net.ConnectException "Conexión rechazada"
  • Ejemplo de JakeWhartons DiskLruCache
  • Problemas de memoria en fragmentos que muestran imágenes
  • 2 Solutions collect form web for “Android: conversión entre cadenas, SpannedStrings y Spannablestrings”

    Parece que no hay una manera más directa de lograr esto.

    Yo tuve el mismo problema. Existen dos soluciones según las Guías de API de Google .

    Primero es escapar < marca con &lt; En el recurso de cadena. Desafortunadamente, String conversión de la String quita la etiqueta en el fondo.

    En segundo lugar es utilizar las cadenas de formato en lugar de etiquetas XML / HTML. Parece más simple, más rápido, y elude los problemas ocultos de conversión. getString(resource, ...) funciona como un printf(string, ...) aquí.

    Ambos trabajan y requieren algún código para reemplazar parte dada de la cadena de todos modos (manejar etiquetas o cadenas de formato). ¡Disfrutar! =)

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.