Nuevo carácter de línea \ n no se muestra correctamente en textView Android

Sé que si haces algo como

myTextView.setText("This is on first line \n This is on second line"); 

Entonces se mostrará correctamente como este:

Esta es la primera línea
Esta es la segunda línea

Cuando almaceno esa cadena en una base de datos y luego la pongo a la vista que aparece como tal:

Esto está en la primera línea \ n Esto está en la segunda línea

Esta es la línea de código que utilizo para extraer la cadena de la base de datos:

 factView.setText(factsCursor.getString(MyDBAdapter.FACT_COLUMN)); 

Simplemente relleno la base de datos de un archivo de texto donde cada línea es una nueva entrada en la tabla así que una línea parecería esto "Esto está en la primera línea \ n Esto está en la segunda línea" y se almacena como texto.

¿Hay alguna razón por la que no se muestran correctamente los \ n caracteres? Debe ser algo que ver con la cadena que está en la base de datos. ¿Alguna sugerencia?

Como Falmarri dijo en su comentario, su cadena se está escapando cuando se pone en la base de datos. Usted podría intentar y unescape la cadena llamando a la String s = unescape(stringFromDatabase) antes de colocarlo en su TextView .

Como advertencia, asegúrese de que está utilizando DatabaseUtils.sqlEscapeString() en cualquier tipo de datos que provengan del usuario o de una fuente cambiable desconocida al insertar datos en la base de datos. Esto le protegerá de errores e Inyección de SQL .

He encontrado esta pregunta Austyn Mahoney respuesta es correcta, pero aquí hay un poco de ayuda:

  private String unescape(String description) { return description.replaceAll("\\\\n", "\\\n"); } 

description es la cadena que sale de su base de datos de SQLite

Intente \\n lugar de \n . Si lanza una excepción que usar una palabra clave newline en lugar de \ n … newline es un carácter, ascii 10; a menudo se introduce en una cadena literal … y servirá a su propósito …. 🙂

 "This is on first line"||x'0A'||"This is on second line" 

El || concatena cadenas y el x'0A' es una nueva línea sin escape.

Si está insertando registros, tendrá que reemplazar cada nueva línea por "||x'0A'||" (Si la cadena es doble). Esto puede parecer torpe comparado con el otro asnswers. Sin embargo, si sus líneas están en columnas separadas esto también funciona en un select:

 SELECT firstline||x'0A'||secondline FROM wherever; 

Encontré esto mientras tenía el mismo problema que usted: http://www.mail-archive.com/[email protected]/msg43557.html

Un área de texto puede estar en modo de línea múltiple o de línea única. Cuando está en modo de línea única, los caracteres de nueva línea '\ n' serán tratados como espacios. En caso de duda, para activar el modo multi-línea, puede utilizar el código siguiente:

  setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_MULTI_LINE); 

Tuve el problema de que el mismo código no funcionaba en nido de abeja y en froyo, que parecen tener diferentes valores por defecto. Ahora también excluyo la bandera cuando quiero forzar un campo para ser solo alineado.

Desde el documento de Android:

public static final int TYPE_TEXT_FLAG_MULTI_LINE Se agrega en el nivel 3 de API

Marca para TYPE_CLASS_TEXT: se pueden introducir varias líneas de texto en el campo. Si este indicador no está establecido, el campo de texto se restringirá a una sola línea. Valor constante: 131072 (0x00020000)

http://developer.android.com/reference/android/text/InputType.html#TYPE_TEXT_FLAG_MULTI_LINE

Debe establecer el indicador antes de rellenar el campo.

  • ¿Es posible el estilo de los estilos de fuentes de Android con líder y el seguimiento?
  • A veces, las extensiones de la imagen no son visibles cuando el contenido cubre varias líneas en la vista de texto
  • Cambiar el color de fondo de un TextView cuando se hace clic
  • TextView ampliar animación como en Android Market
  • Fórmula química en Android
  • Actualización de la actividad TextView desde el servicio mediante vinculación de servicio
  • Android (cambio de cadena en código java)
  • Cómo hacer que TextView se desplace en Android
  • Margen ajustado a la primera línea de textView
  • Android - Cómo configurar el relleno para TextView en ListView o ExpandableListView
  • Cómo eliminar la fila de la tabla en el diseño de la tabla en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.