¿Cómo agrego una nueva línea a TextView en Android?


253

Cuando defino una TextViewen xml, ¿cómo puedo añadir una nueva línea a ella? \nParece que no funciona.

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

1
Tu código funciona para mí. ¿Qué obtienes en lugar de texto multilínea?
molnarm

2
En el editor visual se muestra como textual \ n
Pentium10

Respuestas:


293

No confíes en el editor visual. Tu código funciona en el emu.


bueno, en mi caso, el editor visual decía la verdad. Estaba agregando otra barra invertida para mostrar la barra invertida. La forma correcta era poner el texto dentro del archivo xml.
dp2050

79

Tratar:

android:lines="2"

\n Deberia trabajar.


1
mi vista de texto puede ser más larga que 2 líneas. Es un control. Puede ser casi cualquier cosa.
dropsOfJupiter


38

Creo que esto tiene algo que ver con tu HTM.fromHtml(subTitle)llamada: un "\ n" no significa bupkis para HTML. Intente en <br/>lugar de "\ n".


25
@androidevAlex Eso es porque es <br/>, no </br>
Ilya Kogan

21

Primero, pon esto en tu vista de texto:

android:maxLines="10"

Luego, utilícelo \nen el texto de su vista de texto.

maxLines hace que TextView tenga como máximo esta cantidad de líneas. Puedes elegir otro número :)


19

Intenté todo lo anterior, hice algunas investigaciones por mi cuenta, lo que resultó en la siguiente solución para renderizar caracteres de escape de avance de línea:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Usando el método de reemplazo, necesita filtrar los saltos de línea escapados (por ejemplo '\\\n')

  2. Solo entonces cada instancia de '\n'caracteres de escape de salto de línea se procesa en el salto de línea real

Para este ejemplo, utilicé una base de datos de Google Apps Scripting noSQL (ScriptDb) con datos formateados JSON.

Saludos: D


1
Esto funcionó para mí: replace ("\\ n", System.getProperty ("line.separator"));
slott

más bien, string = string.replaceAll ("\\\ n", System.getProperty ("line.separator"));
usuario846316

10
<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \r\n-Line2\r\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

Creo que esto funcionará.


8

Mis 2 centavos, usando Android TV.

Agregue \ncadenas XML mientras lee:

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}

8

Solo resuelvo el mismo problema, pon los siguientes atributos en xml

android:lines="2" android:maxLines="4" android:singleLine="false"

trabajo. Html.fromHtml("text1 <br> text2").toString()Además trabajo.


Esto sigue siendo relevante, gracias! Tenía maxLines, pero no tenía singleLine = false.
blast_hardcheese

Esta es la única solución que me funcionó. ¡Gracias!
Silas

8

Asegúrese de que \nesté listo "\n"para que funcione.


7

Esto resolvió mi problema.

stringVar.replaceAll("\\\\n", "\\\n");


5

Una forma de hacerlo es usando Htmletiquetas ::

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));

5

Si depura, verá que la cadena está realmente "\ \r\ \n"o "\ \n", es decir, se ha escapado. Entonces, si masajeas esa cuerda, para deshacerte del extra \, tendrás tu solución. Esto es cierto especialmente si está leyendo desde una base de datos.


5

Debe colocar el archivo "\n"en el strings.xmlarchivo no dentro del diseño de página.


Esto funcionó para mí, donde Visual Editor estaba agregando barras invertidas adicionales tratando de mostrar la barra invertida en \ n
dp2050

4

Necesito mantener

1)android:maxLines="no of lines"

2. Y utilizar \npara obtener las siguientes líneas


4

Para mí, la solución fue agregar la siguiente línea al diseño:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    >

Y \ n aparece como una nueva línea en el editor visual. ¡Espero eso ayude!


1
No estoy seguro de si está relacionado con la pregunta :)
Suleyman

Tuve el mismo problema que, en lugar de una nueva línea, la cadena "\ n" apareció por sí misma. Cuando agregué la línea de arriba, este ya no es el caso y apareció la nueva línea
Rob

1
Tal vez sea porque estaba usando tools:texty no android:textcomo el OP, pero de todos modos lo siento por molestar :)
Suleyman

Creo que debería haberlo aclarado mejor, gracias a tu comentario que hice :) android:textCreo que es solo un error del editor visual, como sugiere la respuesta aceptada, pero es más cómodo poder verlo :)
Rob

Sí, entiendo ahora, tienes razón, es más cómodo :) gracias
Suleyman

4

También puedes agregar en &lt;br&gt;lugar de\n.

Y luego puede agregar texto a TexView:

articleTextView.setText(Html.fromHtml(textForTextView));

No en el XML que no puedes. Da un error de compilación: android:textno puede contener <o> caracteres.
Timmmm

3

Necesitas poner \nen el archivostring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>

2
 android:text="Previous Line &#10; Next Line" 

Esto funcionará


No lo hace
shazbot

<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Prev Line & # 10; New LIne" /> Necesita ejecutar en el emulador para verlo funcionar. Gracias
Viral Parmar

2

Sólo inténtalo:

Textview_name.settext("something \n  new line "):

En archivo Java.


3
Por favor, dar una respuesta adecuada a la pregunta, de lo contrario usar comentario
DjSh

1

La respuesta de RuDrA05 es buena, cuando edito el XML en eclipse no funciona, pero cuando edito el XML con notepad ++, SÍ funciona.

Lo mismo sucede si leo un archivo txt guardado con eclipse o notepad ++

Quizás esté relacionado con la codificación.


1

Esto funciona bien Compruébalo para tu aplicación.

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1\nText 2\nText 3"/>

1

Nota al margen: capitalizar texto usando

android:inputType="textCapCharacters"

o similar parece impedir que \nfuncione.


1

Asegúrese de estar usando your_package.R y noandroid.R



0

para la nueva línea en TextView simplemente agregue \ n en el medio de su texto, funciona.


pero la respuesta se relaciona con el enlace de la pregunta No es la pregunta "SU" ...
Nikhil Borad

omg..muy confundido por mí.por favor edite su respuesta..Cambio mi voto positivo.
Ranjith Kumar

1
oye primero edita tu respuesta. de lo contrario no puedo cambiar mi voto.
Ranjith Kumar

0

Si TextView está en cualquier diseño (LinearLayout, por ejemplo), intente cambiar el atributo de orientación a vertical como android:orientation="vertical"para el diseño o cambie el TextViewatributo android:singleLine="true"para crear una nueva línea después de él.


0

De manera programática: myTV.setText ("Mi texto" + "\ n" + myString);


0

Crea una cadena en tu stings.xml

<resources>
    ...
    <string name="new_line">\u000A</string>
</resources>

Luego, en su código de referencia, la cadena

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
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.