Cadena de recursos nueva línea / n no es posible?

167

No parece que sea posible agregar una nueva línea /na una cadena de recursos XML. ¿Hay otra manera de hacer esto?

Andi Jay
fuente
12
quieres decir \ n? ¿Tienes un ejemplo?
Keith
1
Se supone que es \ n. Funciona para mí
akash89
1
@anandtripathi, revertí tu edición porque hacía que las respuestas carecieran de sentido. El OP usó erróneamente \ n en lugar de / n, que es la esencia de la pregunta. No debemos corregir el código de OP, sino solo el cuerpo de la pregunta, por las obvias razones
Vega

Respuestas:

382

use una barra negra, no una barra delantera. \n

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

Además, si planea usar la cadena como HTML, puede usarla &lt;br /&gt;para un salto de línea ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>
James
fuente
3
En strings.xml solo acepta el formato HTML, por lo que & lt; br / & gt; es la solución adecuada proporcionada
akash89
Quiero mencionar algo para las personas como yo que llegan a esta página debido a Android Studio. En AS, cuando extrae una cadena con la herramienta del IDE, automáticamente elimina los caracteres de nueva línea. Puede volver a agregarlos manualmente y funcionará bien. No estoy seguro de por qué hace esto.
George Rautenbach
\ n no funciona para mí, ni cambiar la línea ni la cadena tiene / n. Sabes por qué ? ni presionar enter funciona, eso dijo en otras respuestas
Thelouras
52

Sé que esta es una pregunta bastante antigua, pero encabezó la lista cuando busqué. Entonces quería actualizar con otro método.

En el archivo strings.xml puede hacer \ n o simplemente presionar enter:

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

Esto resultará en lo siguiente en su TextView:

Esta es tu cuerda.

Esta es la segunda línea de tu cadena.

Tercera línea de tu cuerda.

Esto se debe a que hubo dos retornos entre la declaración inicial de la cadena y la nueva línea. También agregué el \ n para mayor claridad, ya que se puede usar. Me gusta usar los retornos de carro en el xml para poder ver una lista o cualquier cadena multilínea que tenga. Mis dos centavos.

Dimesio
fuente
3
Oh eso es interesante. gracias por compartir. Además, me siento como un idiota por hacer esta pregunta, pero parece que ha ayudado a mucha gente. Jajaja
Andi Jay
44
Dos saltos de línea sucesivos son tratados por (al menos las versiones actuales de) Android como un solo espacio. github.com/paour/StringResourceTest
Pierre-Luc Paour
19

Esta es una vieja pregunta, pero descubrí que cuando creas una cadena como esta:

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

El resultado en su aplicación será así (sin nueva línea)

My New line test

Cuando pones la cadena entre comillas

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

aparecerá la nueva línea:

My 
New line test
Peter
fuente
1
Funciona para mí, pero por si acaso, recuerde que cuando defina recursos como el anterior, debe evitar usar Html.fromHtml. Gracias
Ahmad Reza Enshaee
Envolver la cadena multilínea entre comillas funcionó perfectamente. Mucho mejor que poner en \ntodas partes (que puede volverse ilegible y confuso rápidamente). No hace falta decirlo, pero por si acaso: si quieres tener una comilla literal en tu texto, debes escapar:\"
Nolonar
4

Si coloca "\ n" en una cadena en el archivo xml, se toma como "\\ n"

Así que lo hice :

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

Y luego aparece un salto de línea en la pantalla

flamandier
fuente
3
Solo sucede cuando agrega la cadena con el asistente. Si edita el xml funciona
Daniel Argüelles
Yo también cometí este error. Gracias por su consejo. Pero acabo de corregir todas las apariencias de mí mismo.
Kanat
No es una buena solución. Debe obtener el texto de los recursos y usarlo directamente. ¿Qué pasa si tienes que manejar más caracteres especiales? ¿Vas a escribir más código para ellos también? ¿Qué pasa si tienes casos extremos?
dephinera
3

Cuando use el editor de traducciones en Android Studio, simplemente haga clic en el ícono a la derecha (o use Shift-Enter) y luego agregue saltos de línea usando la tecla de retorno. Esto insertará \ n correctamente en las cadenas localizadas.xml.

Torkel Börjeson
fuente
Muchas gracias por esta respuesta.
Simple
2
No hay ningún icono a la derecha y Shift-Enter salta al siguiente texto anterior, al menos en ubuntu.
Tibor Nagy
3

En la última versión de Android Studio, "\ n" se imprimirá como si estuviera destinado a menos que toda la cadena esté en apóstrofes

Por ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>
Sventra
fuente
¿Cómo puedo hacer dos líneas de corte?
jvargas
1

Muy simple, tiene que poner
\ n donde quiera romper la línea en su recurso de cadena.

Por ejemplo

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

Ali Nawaz
fuente
¿Cómo puedo hacer dos líneas de corte?
jvargas
1

no ponga espacio después de \ n, de lo contrario, no funcionará. No sé la razón, pero este truco me funcionó bastante bien.

SaloniGupts
fuente
0

Quiero ampliar esta respuesta. Lo que querían decir es este ícono:

Botón de la ventana del editor

Abre una "ventana del editor real" en lugar del cuadro de texto de características limitadas en la gran descripción general. En esa ventana del editor, se permiten caracteres especiales, saltos de línea, etc. y se convierten al "código" xml correcto cuando se guardan

Patricio
fuente
0

Acabo de enfrentar este problema. no funcionó TextViewcon parámetros de restricción. Agregar android:lines="2"parece solucionar esto.

Colina Karimov
fuente