Chaîne Ressource nouvelle ligne / n impossible?


167

Il ne semble pas possible d'ajouter une nouvelle ligne /nà une chaîne de ressources XML. Y a-t-il une autre façon de faire cela?


12
tu veux dire \ n? Avez-vous un exemple?
Keith

1
Il est censé être \ n. Fonctionne pour moi
akash89

1
@anandtripathi, j'ai annulé votre modification parce que cela rendait les réponses dénuées de sens. L'OP avait utilisé à tort \ n au lieu de / n, ce qui est l'essence de la question. Nous ne devrions pas corriger le code d'OP, mais seulement le corps de la question, pour les raisons évidentes
Vega

Réponses:


382

utilisez une barre oblique noire et non une barre oblique avant. \n

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello\nWorld!</string>
</resources>

De plus, si vous prévoyez d'utiliser la chaîne au format HTML, vous pouvez utiliser &lt;br /&gt;pour un saut de ligne ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>

3
Dans strings.xml, seul le format HTML est accepté, donc & lt; br / & gt; est la solution appropriée fournie
akash89

Je souhaite mentionner quelque chose aux personnes comme moi qui accèdent à cette page grâce à Android Studio. Dans AS, lorsque vous extrayez une chaîne à l'aide de l'outil de l'EDI, il supprime automatiquement les caractères de nouvelle ligne. Vous pouvez simplement les rajouter manuellement et cela fonctionnera bien. Je ne sais pas pourquoi il fait cela.
George Rautenbach

\ n ne fonctionne pas pour moi, ni ne change la ligne ni la chaîne n'a / n. Est-ce que tu sais pourquoi ? ni appuyez sur entrer fonctionne, cela dit dans d'autres réponses
Thelouras

52

Je sais que c'est une question assez ancienne, mais elle était en tête de liste lorsque j'ai cherché. J'ai donc voulu mettre à jour avec une autre méthode.

Dans le fichier strings.xml, vous pouvez faire le \ n ou vous pouvez simplement appuyer sur Entrée:

<string name="Your string name" > This is your string.

   This is the second line of your string.\n\n Third line of your string.</string>

Cela entraînera ce qui suit sur votre TextView:

Ceci est votre chaîne.

Ceci est la deuxième ligne de votre chaîne.

Troisième ligne de votre chaîne.

Ceci est dû au fait qu'il y avait deux retours entre la déclaration de début de la chaîne et la nouvelle ligne. J'ai également ajouté le \ n pour plus de clarté, car l'un ou l'autre peut être utilisé. J'aime utiliser les retours chariot dans le xml pour pouvoir voir une liste ou toute autre chaîne multiligne que j'ai. Mes deux centimes.


3
Oh c'est intéressant. Merci d'avoir partagé. De plus, je me sens idiot d'avoir posé cette question, mais il semble que cela ait aidé beaucoup de gens. LOL !!
Andi Jay

4
Deux sauts de ligne successifs sont traités par (au moins les versions actuelles de) Android comme un seul espace. github.com/paour/StringResourceTest
Pierre-Luc Paour

19

C'est une vieille question, mais j'ai trouvé que lorsque vous créez une chaîne comme celle-ci:

<string name="newline_test">My
New line test</string>

La sortie dans votre application sera comme ça (pas de nouvelle ligne)

My New line test

Lorsque vous mettez la chaîne entre guillemets

<string name="newline_test">"My
New line test"</string>

la nouvelle ligne apparaîtra:

My 
New line test

1
Fonctionne pour moi, mais juste au cas où, rappelez-vous que lorsque vous définissez des ressources comme ci-dessus, vous devez éviter d'utiliser Html.fromHtml. Merci
Ahmad Reza Enshaee

Emballer la chaîne multiligne entre guillemets fonctionnait parfaitement. Bien mieux que d'en mettre \npartout (ce qui peut vite devenir illisible et déroutant). Inutile de dire, mais juste au cas où: si vous voulez avoir un guillemet littéral dans votre texte, vous devez y échapper:\"
Nolonar

4

Si vous mettez "\ n" dans une chaîne dans le fichier xml, il est considéré comme "\\ n"

Alors, j'ai fait:

text = text.Replace("\\\n", "\n");   ( text is taken from resX file) 

Et puis je reçois un saut de ligne sur l'écran


3
Se produit uniquement lorsque vous ajoutez la chaîne avec l'assistant. Si vous modifiez le xml, cela fonctionne
Daniel Argüelles

J'ai aussi fait cette erreur. Merci pour vos conseils. Mais je viens de corriger toutes les apparences de \ n moi-même.
Kanat

Pas une bonne solution. Vous devriez obtenir le texte des ressources et l'utiliser directement. Et si vous devez gérer plus de caractères spéciaux? Tu vas écrire plus de code pour eux aussi? Et si vous avez des boîtiers marginaux?
dephinera

3

Lorsque vous utilisez l'éditeur de traductions dans Android Studio, cliquez simplement sur l'icône à droite (ou utilisez Maj-Entrée), puis ajoutez des sauts de ligne en utilisant return. Cela insérera \ n correctement dans le fichier strings.xml localisé.


Merci beaucoup pour cette réponse.
Simple

2
Il n'y a pas d'icône à droite et Shift-Enter saute au texte suivant ci-dessus, au moins sur ubuntu.
Tibor Nagy

3

Dans la dernière version d'Android Studio, "\ n" sera imprimé comme s'il était censé être là, à moins que la chaîne entière ne soit dans des apostrophes

Par exemple:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>

Comment puis-je créer deux lignes de rupture?
jvargas

1

Très simple, vous devez simplement mettre
\ n là où vous voulez couper la ligne dans votre ressource de chaîne.

Par exemple

String s = my string resource have \n line break here;


Comment puis-je créer deux lignes de rupture?
jvargas

1

ne mettez pas d'espace après \ n, sinon cela ne fonctionnera pas. Je ne connais pas la raison, mais cette astuce a plutôt bien fonctionné pour moi.


0

Je veux développer cette réponse. Ce qu'ils voulaient dire, c'est cette icône:

Bouton de la fenêtre de l'éditeur

Il ouvre une "vraie fenêtre d'éditeur" au lieu de la zone de texte à fonctionnalités limitées dans le grand aperçu. Dans cette fenêtre de l'éditeur, les caractères spéciaux, les sauts de ligne, etc. sont autorisés et convertis en «code» XML correct lors de l'enregistrement


0

Je viens de faire face à ce problème. n'a pas fonctionné TextViewavec les paramètres de contrainte. L'ajout android:lines="2"semble résoudre ce problème.

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.