est-il possible d'ajouter
dans TextView? Quelqu'un a-t-il atteint des fonctionnalités similaires?
Je veux avoir un espace insécable dans TextView.
TextView
respecte le caractère d'espace sans coupure Unicode ( \u00A0
), ce qui serait une solution plus simple / plus légère que HTML.
\u00A0
est un espace insécable,\u0020
n'est pas un espace insécablela source
Il est possible d'utiliser
pour avoir une solution lisible. Inclure\u00A0
ou 
ou 
/ 
dans le texte ne transmet pas vraiment beaucoup d'informations au lecteur du code source (ou au traducteur d'ailleurs), à moins que vous ne vous souveniez des codes hexadécimaux. Voici un moyen d'utiliser l'entité nommée dansstrings.xml
:Cela créera la déclaration manquante. La déclaration HTML originale peut être trouvée dans https://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent référencée à partir des DTD XHTML habituels . Tout cela fonctionne, car l'analyseur XML les lit et les remplace lors du chargement du fichier, de sorte que l'entité ne sera pas présente dans les ressources compilées résultantes.
dans Android Text (CharSequence
) ResourcesAppareil et aperçu (l'aperçu ne reconnaît pas le HTML)
dans les ressources de chaîne Android (formatées)Puis dans le code:
Appareil et aperçu (l'aperçu ne reconnaît pas les entités et les chaînes Java sont du texte littéral!)
Autres astuces
Ce ne sont que des exemples d'utilisation d'entités DTD, utilisez-les en fonction de vos préférences.
Les deux aident à mettre en évidence:
la source
’
caractère, pas besoin de créer des entités apostrophe.<string name="original">Don’t wrap %1$s</string>
fonctionne comme prévu.'
VS’
. Android n'a aucun problème avec des caractères Unicode plus sophistiqués, mais il a un problème avec ASCII 0x27, qui doit être échappé. L'entité est juste une commodité, je l'ai juste mise là pour montrer où elle pourrait être utile.
dans les chaînes est bien plus significatif pour les traducteurs que l'unicode\u00A0
con
etparam1
dans le même fichier.Le TextView doit respecter l'espace insécable
ou
la source
Une situation unique que j'ai rencontrée était l'ajout d'un espace insécable à une ressource de chaîne qui prenait des
String.format
paramètres.J'ai essayé de simplement copier et coller le caractère d'espace insécable dans la chaîne et il a été remplacé par un ancien espace régulier après la compilation.
La suppression du formaté = "false" , la numérotation des arguments de format et l'utilisation de la notation antislash a fonctionné pour moi:
la source
Cela a fonctionné pour moi:
la source
Ceci est un exemple d'utilisation de nbsp dans un TextView
<string name="text">Example:\u00A0</string>
la source