Cómo preservar las saltos de línea en los recursos xml <string> en Android?

Estoy tratando de utilizar constantes de varias líneas (definido en archivo .xml en / res / valores / carpeta), pero parece que es imposible preservar los saltos de línea allí – todos ellos están siendo convertidos en espacios. He intentado jugar con el atributo "formatado" de las cadenas (fijándolo a "verdadero" y "falso", también he intentado empaquetar cadenas en etiquetas de CDATA, como esto:

<string name="str1"> A B C </string> <string name="str2" formatted="true"> A B C </string> <string name="str3" formatted="false"> A B C </string> <string name="str4"><![CDATA[ A B C ]]></string> <string name="str5" formatted="true"><![CDATA[ A B C ]]></string> <string name="str6" formatted="false"><![CDATA[ A B C ]]></string> 

Todas estas variantes de declaración de cadena producen resultados idénticos: cadena de cinco caracteres "ABC" (los cambios de línea se reemplazan por un solo espacio). Hay alguna manera de evitar esto?

PS Entiendo que puedo usar "\ n" para insertar saltos de línea, pero de todos modos la cadena resultante contendrá espacios en lugar de pausas de línea reales; Es decir, después de la declaración:

 <string name="str1"> A\n B\n C\n </string> 

Resulta en la cadena "A \ n B \ n C \ n" (cada salto de línea insertado manualmente seguido de un espacio molesto). ¿Hay algún trabajo alrededor?..

En caso de que la gente tenga problemas con esto, al insertar \n al final de la cadena XML se produce la sangría. Por ejemplo:

 <string name="test"> A\n B\n C </string> 

Aparecerá como

 A B C 

En su lugar, debe insertar \n en BEGINNING de cadenas XML

 <string name="test"> A \nB \nC </string> 

Esto hará que las nuevas líneas aparezcan correctamente.

Utilice otra barra diagonal inversa al final de cada línea:

 <string name="str1"> A\n\ B\n\ C\n\ </string> 

De esta manera, inserta saltos de línea utilizando el "\ n" y escapa del final de línea en el archivo de recursos para que no se convierta en espacio.

Todavía feo, pero funciona.

Para agregar una nueva línea desde XML, debe agregar "\ n".

Así es como lo haces.

 <string name="testing">A\nB\nC</string> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:lines="4" android:text="@string/testing"/> 

Espero que esto ayude

Utilizar html se rompe así:

 <string name="your_string"> <![CDATA[ <p> Here is your text.<br/> This text is on a new line.<br/> So is this text. \n This is on the previous line with a space added. </p> ]]> </string> 

Mis dos centavos.
He resuelto utilizando matrices de cadenas, cargando el recurso y luego concatenar los elementos de la matriz.
También me parece agradable tener cada cadena larga en un archivo separado.

 String[] storages = getResources().getStringArray(R.array.storages); String oneline = new String(); for (int i = 0; i < storages.length; i++) { oneline = oneline.concat(storages[i]); if (i < storages.length - 1) oneline.concat(System.getProperty("line.separator")); } 
  • Archivo no válido: google-play-services_lib / build.xml en android
  • Definición del estilo de origen XML de Gradient / Shape / Corners
  • Imageview se borra
  • Parser SAX vs analizador XMLPull
  • Notificación personalizada de Android que no muestra cambios de código
  • Android: propósito de usoLevel en etiqueta de forma
  • Cómo cambiar la casilla de verificación (marcar casilla) color a blanco en android XML
  • Cambiar el color de Switch en Android
  • cómo hacer que el diseño haga clic de forma programable
  • Creación de una cuadrícula como diseño en Android
  • Cómo obtener una imagen semi transparente en la parte superior de otra imagen para mantener el texto en android (captura de pantalla proporcionada)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.