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

5 Solutions collect form web for “Cómo preservar las saltos de línea en los recursos xml <string> en Android?”

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")); } 
  • Cómo cambiar la imagen de un botón con cada clic?
  • No ejecuta la primera actividad
  • Utilizar un prefijo de espacio de nombres no androide en elementos secundarios en un diseño
  • FrameLayout no se puede convertir en android.widget.AbsListView
  • ¿Hay una manera más fácil de analizar XML en Java?
  • Android obteniendo valor del botón de radio seleccionado
  • Cómo colorear el contorno de mi texto negro en xml para android
  • ¿Qué es "tools: context" en los archivos de diseño de Android?
  • Enviar blob o matriz de bytes en XML
  • Hacer una forma triangular con definiciones xml?
  • Android Studio activity_main.xml editor de diseño no me deja arrastrar y soltar nada ...?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.