String Risorsa nuova riga / n non possibile?


167

Non sembra che sia possibile aggiungere una nuova riga /na una stringa di risorse XML. C'è un altro modo di farlo?


12
vuoi dire \ n? Hai un esempio?
Keith,

1
Dovrebbe essere \ n. Funziona per me
akash89,

1
@anandtripathi, ho ripristinato la tua modifica perché ha reso insignificanti le risposte. L'OP aveva erroneamente usato \ n invece di / n, che è l'essenza della domanda. Non dovremmo correggere il codice OP, ma solo il corpo della domanda, per le ovvie irruzioni
Vega

Risposte:


382

usa una blackslash non una forwardsash. \n

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

Inoltre, se prevedi di utilizzare la stringa come HTML, puoi utilizzare &lt;br /&gt;per un'interruzione di riga ( <br />)

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

3
In strings.xml accetta solo il formato HTML, quindi & lt; br / & gt; è la soluzione appropriata fornita
akash89

Voglio menzionare qualcosa per le persone come me che raggiungono questa pagina a causa di Android Studio. In AS quando si estrae una stringa utilizzando lo strumento IDE, vengono automaticamente rimossi i caratteri di nuova riga. Puoi semplicemente aggiungerli manualmente e funzionerà bene. Non sono sicuro del perché lo faccia.
George Rautenbach,

\ n non funziona per me, né cambia la riga né la stringa ha / n. Sai perché ? nessuno dei due ha colpito Enter
Works

52

So che questa è una domanda piuttosto vecchia ma in cima alla lista quando ho cercato. Quindi volevo aggiornare con un altro metodo.

Nel file strings.xml puoi fare il \ n oppure puoi semplicemente premere invio:

<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>

Ciò comporterà quanto segue su TextView:

Questa è la tua stringa.

Questa è la seconda riga della stringa.

Terza riga della stringa.

Questo perché c'erano due ritorni tra la dichiarazione iniziale della stringa e la nuova riga. Ho anche aggiunto \ n ad esso per chiarezza, in quanto entrambi possono essere utilizzati. Mi piace usare i ritorni a capo nell'xml per poter vedere un elenco o qualsiasi stringa multilinea che ho. I miei due centesimi.


3
Oh, è interessante. grazie per la condivisione. Inoltre, mi sento un idiota per porre questa domanda, ma sembra che abbia aiutato molte persone. LOL !!
Andi Jay,

4
Due interruzioni di riga successive vengono trattate (almeno nelle versioni attuali di) Android come un singolo spazio. github.com/paour/StringResourceTest
Pierre-Luc Paour

19

Questa è una vecchia domanda, ma ho scoperto che quando si crea una stringa come questa:

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

L'output nella tua app sarà così (nessuna nuova riga)

My New line test

Quando si inserisce la stringa tra virgolette

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

apparirà la nuova riga:

My 
New line test

1
Funziona per me, ma per ogni evenienza, ricorda che quando definisci risorse come sopra, dovresti evitare di usarle Html.fromHtml. Grazie
Ahmad Reza Enshaee,

Avvolgere la stringa multilinea tra virgolette ha funzionato perfettamente. Molto meglio che mettere \novunque (che può diventare rapidamente illeggibile e confuso). Inutile dirlo, ma per ogni evenienza: se vuoi avere una virgoletta letterale nel tuo testo, devi scappare:\"
Nolonar,

4

Se inserisci "\ n" in una stringa nel file xml, viene considerato come "\\ n"

Così ho fatto :

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

E poi faccio un salto di linea sullo schermo


3
Succede solo quando aggiungi la stringa con la procedura guidata. Se modifichi l'xml funziona
Daniel Argüelles,

Ho fatto anche questo errore. Grazie per il tuo consiglio. Ma ho appena corretto tutte le apparenze di me stesso.
Kanat,

Non è una buona soluzione. Dovresti ottenere il testo dalle risorse e usarlo direttamente. E se dovessi gestire personaggi più speciali? Scriverai più codice anche per loro? E se hai dei casi limite?
Dephinera,

3

Quando si utilizza l'editor delle traduzioni in Android Studio, fare clic sull'icona a destra (o utilizzare Maiusc-Invio) e quindi aggiungere le interruzioni di riga utilizzando Invio. Ciò inserirà \ n correttamente in strings.xml localizzato.


Grazie mille per questa risposta
Semplice

2
Non c'è icona a destra e Shift-Enter passa al testo successivo sopra, almeno su Ubuntu.
Tibor Nagy,

3

Nell'ultima versione di Android Studio, "\ n" verrà stampato come se fosse pensato per essere lì a meno che l'intera stringa non sia in apostrofi

Per esempio:

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

Come posso fare due linee di interruzione?
jvargas,

1

Molto semplice devi solo mettere
\ n dove mai vuoi interrompere la linea nella tua risorsa stringa.

Per esempio

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


Come posso fare due linee di interruzione?
jvargas,

1

non inserire spazio dopo \ n, altrimenti non funzionerà. Non conosco il motivo, ma questo trucco ha funzionato abbastanza bene per me.


0

Voglio ampliare questa risposta. Ciò che intendevano è questa icona:

Pulsante della finestra dell'editor

Apre una "finestra dell'editor reale" anziché la casella di testo con funzionalità limitate nella panoramica generale. In quella finestra dell'editor, caratteri speciali, interruzioni di riga ecc. Sono consentiti e convertiti nel "codice" XML corretto quando vengono salvati


0

Ho appena affrontato questo problema. non ha funzionato TextViewcon i parametri di vincolo. L'aggiunta android:lines="2"sembra risolvere questo problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.