Comment mettre un espace dans un nom de chaîne en XML?


174

J'ai défini quelques chaînes dans le strings.xmlfichier. Maintenant, je dois mettre un espace supplémentaire entre certains nombres dans la chaîne. Lorsque je tape des caractères d'espacement supplémentaires, cela ne s'affiche pas sur l'application.

Avant:

<string name="spelatonertext3">-4, 5, -5, 6, -6,

Et si je mets de l'espace supplémentaire comme ça:

<string name="spelatonertext3">-4,  5, -5,   6,  -6,

Cela a la même apparence sur l'application. Comment puis-je ajouter des espaces dans la chaîne XML?


Eh bien, cela avait la même apparence sur cette page aussi ... :) chose est que je veux un espace entre les nombres, comment est-ce possible ..?
Andreas

Utilisez la mise en forme du code pour préserver les espaces (et le <>contenu) sur SO. :)
Andrew Thompson

Réponses:


405

pour utiliser un espace blanc dans xml comme chaîne &#160;. XML ne prendra pas d'espace blanc tel quel. il coupera l'espace blanc avant de le régler. Alors utilisez &#160;au lieu d'un seul espace blanc


1
Cela ne fonctionne pas avec wrap_content d'une vue de texte, lorsque l'espace apparaît à la fin du texte. La vue de texte ne conserve pas la largeur occupée par le caractère «espace».
toobsco42

28
Cela ajoutera un espace incassable. Il est différent d'un espace normal et ne fonctionnera pas bien avec certaines fonctions (XPath normalize-space, par exemple). Essayez d'utiliser &#032;(espace normal) au lieu de &#160;. @ toobsco42
shwartz

J'ai dû utiliser &#160;au lieu de \u0020placer un espace insécable après l'indicatif régional dans un numéro de téléphone. Sinon, le numéro de téléphone était enveloppé à la fin de la ligne après la parenthèse de fin de l'indicatif régional.
mharper

& # 032; est ok si vous avez besoin d'un espace. Si vous en mettez plusieurs (& # 032; & # 032; ...), ils sont rognés à 1. Je pense que c'est le même comportement qu'un espace vide normal donc cela semble inutile. Si trouvé aussi une suggestion sur & # 009; (censé être un caractère de tabulation): il n'affiche rien. & # 160; fonctionne bien, c'est ce dont j'ai besoin, merci ρяσѕρєя K.
herve-guerin

56

Insérez \ u0020 directement dans le XML pour un blanc que vous souhaitez conserver.

<string name="spelatonertext3">-4, \u00205, \u0020\u0020-5, \u00206, \u0020-6,</string>

24

Android ne prend pas en charge le maintien des espaces à la fin de la chaîne dans le fichier String.xml, donc si vous voulez un espace après la chaîne, vous devez utiliser cet Unicode entre les mots.

\ u0020

C'est un caractère d'espace unicode.


Cela a fonctionné pour moi en utilisant Android Studio 3.6.2 compilé sur Android 4.4. Merci.
Amour et paix - Joe Codeswell le

11

Comme déjà mentionné, la manière correcte d'avoir un espace dans un fichier XML consiste à utiliser \u0020quel est le caractère unicode d'un espace.

Exemple:

<string name="spelatonertext3">-4,\u00205,\u0020-5,\u00206,\u0020-6</string>

D'autres suggestions ont dit d'utiliser &#160;ou &#032;mais il y a deux inconvénients à cela. Le premier inconvénient est qu'il s'agit de caractères ASCII, vous vous fiez donc à quelque chose comme un TextView pour les analyser. Le deuxième inconvénient est que cela &#160;peut parfois provoquer un habillage étrange dans TextViews.


7

Variantes d'espace:

<string name="space_demo">|&#x20;|&#x2009;|&#x200A;|</string>

| ESPACE | ESPACE MINCE | ESPACE CHEVEUX |


1
C'est le plus doux et le plus génial
Abdul Waheed

6

Mettez &#160;dans le fichier string.xml pour indiquer un seul espace dans un projet Android.


6

Cela devrait également fonctionner. Utilisez des guillemets pour conserver l'espace

<string name="spelatonertext3">"-4,  5, -5,   6,  -6,"</string>

1
C'est la réponse la plus claire (la plus facile à lire) à mon avis. Malheureusement, la plupart des gens ne sont probablement pas aussi loin dans la liste de réponses avant de passer à autre chose.
DavidR

5

Vous pouvez également utiliser les éléments suivants

<string name="spelatonertext3"> "-4,  5, -5,   6,  -6, "> </string>

Mettez n'importe quoi entre " "(citation) avec de l'espace, et cela devrait fonctionner


1
Mettez quelque chose entre "" (guillemets) avec un espace, et cela devrait fonctionner: CECI NE FONCTIONNE PAS
Krunal Shah

3

Selon votre question, si vous voulez ajouter des espaces plus d'un dans les ressources de chaîne, il existe de nombreuses options pour ajouter des espaces entre un caractère ou un mot:

1.Par défaut, un espace, vous pouvez ajouter directement dans le fichier de ressources de chaîne, cela fonctionne bien. mais si vous donnez plus d'un espace dans le fichier de ressources de chaîne, il exclut ces espaces. par exemple . -4, 5, -5, 6, -6,

  1. Si vous souhaitez ajouter plus d'espaces supplémentaires dans le fichier de ressources de chaîne, utilisez: - i. ajouter unicode après un caractère comme

        <string name="test">-4,&#160;&#160;5,&#160;&#160;-5,&#160;&#160;6,&#160;&#160;-6,</string>

ii.vous pouvez utiliser "\ u0020"

<string name="test">-4,\u0020\u0020 5,\u0020\u00205 -5,\u0020\u00205 6,\u0020\u00205 -6,</string>

3

Si vous essayez de donner un espace entre 2 chaînes OU un fichier de chaîne d'Android, faites-le dans votre fichier de chaîne. Implémentez ceci avant votre "nom de chaîne" que vous souhaitez afficher. \ u0020 \ u0020 Par exemple. \ u0020 \ u0020 \ u0020 \ u0020 \ u0020 \ u0020Paiement


2

xml: space = "préserver"

Fonctionne comme un charme.

Edit: faux. En fait, cela ne fonctionne que lorsque le contenu est composé uniquement d'espaces blancs.

Lien


1

Si la sortie est HTML, alors en HTML plusieurs espaces s'affichent comme un seul espace. Pour éviter cela, utilisez des espaces insécables (xA0) au lieu d'espaces ordinaires.


1

La seule façon dont je pourrais obtenir plusieurs espaces au milieu de la chaîne.

<string name="some_string">Before" &#x20; &#x20; &#x20;"After</string>

Before   After

0

Vous voulez l'afficher comme "-4, 5, -5, 6, -6," (deux espaces), vous pouvez ajouter le code suivant à string.xml

<string name="spelatonertext3"> "-4,&#160;&#160;5,&#160;-5,&#160;&#160;6,&#160;&#160;-6,"</string>

  est afficher un espace.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.