¿Es posible agregar
en TextView? ¿Alguien ha logrado una funcionalidad similar?
Quiero tener un espacio irrompible en TextView.
TextView
respeta el carácter de espacio sin interrupciones Unicode ( \u00A0
), que sería una solución más simple / ligera que HTML.
\u00A0
es un espacio que no se rompe,\u0020
no es un espacio que no se rompefuente
Se puede utilizar
para tener una solución legible. Incluir\u00A0
o 
o 
/ 
en el texto no transmite mucha información al lector del código fuente (o al traductor para el caso), a menos que recuerde los códigos hexadecimales. He aquí una forma de usar la entidad nombrada enstrings.xml
:Esto creará la declaración que falta. La declaración HTML original se puede encontrar en https://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent referenciada desde los DTD XHTML habituales . Todo esto funciona, porque el analizador XML los lee y los sustituye mientras carga el archivo, por lo que la entidad no estará presente en los recursos compilados resultantes.
en losCharSequence
recursos de Android Text ( )Dispositivo y vista previa (la vista previa no reconoce HTML)
en los recursos de Android String (formateados)Luego en código:
Dispositivo y vista previa (la vista previa no reconoce entidades y las cadenas de Java son texto literal)
Más trucos
Estos son solo ejemplos de usos de entidades DTD, utilícelos según sus preferencias.
Ambos ayudan a destacar:
fuente
’
personaje, no es necesario crear entidades de apóstrofo.<string name="original">Don’t wrap %1$s</string>
funciona como se esperaba.'
VS’
. Android no tiene problemas con caracteres Unicode más sofisticados, pero tiene un problema con ASCII 0x27, que necesita escapar. La entidad es solo una conveniencia, solo la puse allí para demostrar dónde podría ser útil.
en las cadenas es mucho más significativo para los traductores que el Unicode\u00A0
con
yparam1
en el mismo archivo.El TextView debe respetar el espacio que no se rompe
o
fuente
Una situación única con la que me encontré fue la de agregar un espacio sin interrupciones a un recurso de cadena que tomaba
String.format
parámetros.Intenté simplemente copiar y pegar el carácter de espacio que no se rompe en la cadena y fue reemplazado por un espacio antiguo regular después de compilar.
Eliminar el formatted = "false" , numerar los argumentos de formato y usar la notación de barra invertida funcionó para mí:
fuente
Esto funcionó para mí:
fuente
Este es un ejemplo de que el uso de nbsp en un TextView
<string name="text">Example:\u00A0</string>
fuente