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?


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>

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.


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

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


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.


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>

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


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


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


0

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.