¿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" />
Pentium10
fuente
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.

Macarse
fuente
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.

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

tratar System.getProperty("line.separator");

kakopappa
fuente
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".

resnbl
fuente
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 :)

aF.
fuente
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

Robert
fuente
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á.

usuario3578286
fuente
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"));
}
ATOzTOA
fuente
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.

Ben Wong
fuente
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.

Justin
fuente
7

Esto resolvió mi problema.

stringVar.replaceAll("\\\\n", "\\\n");
viki
fuente
6

System.getProperty("line.separator"); este trabajo para mi

Joao Victor
fuente
5

Una forma de hacerlo es usando Htmletiquetas ::

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));
Garry
fuente
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.

Tilottama Gaat
fuente
5

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

epicness42
fuente
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

Danny
fuente
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!

Robar
fuente
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));
mobiledev Alex
fuente
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>
simmash
fuente
2
 android:text="Previous Line &#10; Next Line" 

Esto funcionará

Parmar viral
fuente
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.

usuario11705013
fuente
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.

Sebastian Corradi
fuente
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"/>
Palani Kumar
fuente
1

Nota al margen: capitalizar texto usando

android:inputType="textCapCharacters"

o similar parece impedir que \nfuncione.

Voy
fuente
1

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

Dror
fuente
1

Prueba esto:

android:text="Lorem Ipsum \nDolor Ait Amet \nLorem Ipsum"
Muss Mesmari
fuente
0

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

Nikhil Borad
fuente
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.

Pavani
fuente
0

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

LKS
fuente
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."
Trigve Hagen
fuente