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?

Andi Jay
la source
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>
James
la source
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.

Dimesio
la source
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
Peter
la source
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

flamandier
la source
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é.

Torkel Börjeson
la source
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>
Sventra
la source
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;

Ali Nawaz
la source
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.

SaloniGupts
la source
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

Patrick
la source
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.

Colline Karimov
la source