Come faccio ad aggiungere una nuova riga a un TextView in Android?


253

Quando definisco un TextViewin xml, come posso aggiungere una nuova linea ad esso? \nsembra non funzionare.

<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
Il tuo codice funziona per me. Cosa ottieni al posto del testo multilinea?
molnarm,

2
Nell'editor visivo mostra come testuale \ n
Pentium10

Risposte:


293

Non fidarti dell'editor visivo. Il tuo codice funziona nell'emù.


bene, nel mio caso, l'editor visuale stava dicendo la verità. Stava aggiungendo un'altra barra rovesciata per visualizzare la barra rovesciata. Il modo corretto era inserire il testo all'interno del file xml.
dp2050,

79

Provare:

android:lines="2"

\n dovrebbe funzionare.


1
la mia visualizzazione del testo potrebbe essere più lunga di 2 righe. È un controllo. Può essere praticamente qualsiasi cosa.
dropsOfJupiter


38

Penso che questo abbia qualcosa a che fare con la tua HTM.fromHtml(subTitle)chiamata: un "\ n" non significa bupkis in HTML. Prova <br/>invece di "\ n".


25
@androidevAlex Questo perché è <br/>, non </br>
Ilya Kogan,

21

Innanzitutto, inseriscilo nella tua visualizzazione di testo:

android:maxLines="10"

Quindi utilizzare \nnel testo della visualizzazione del testo.

maxLines fa sì che TextView sia al massimo di così tante righe. Puoi scegliere un altro numero :)


19

Ho provato tutto quanto sopra, ho fatto alcune ricerche per me stesso risultando nella seguente soluzione per il rendering dei caratteri di escape del feed di linea:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Utilizzando il metodo di sostituzione è necessario filtrare gli avanzamenti di riga di escape (ad es. '\\\n')

  2. Solo allora ogni istanza di '\n'caratteri di escape di avanzamento riga viene renderizzata nell'effettivo avanzamento riga

Per questo esempio ho usato un database noSQL per gli script di Google Apps (ScriptDb) con dati formattati JSON.

Cin cin: D


1
Questo ha funzionato per me: replace ("\\ n", System.getProperty ("line.separator"));
slott

piuttosto, string = string.replaceAll ("\\\ n", System.getProperty ("line.separator"));
user846316

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" />

Penso che questo funzionerà.


8

I miei 2 centesimi, usando Android TV.

Aggiungi \nstringhe XML durante la lettura:

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

8

Ho appena risolto lo stesso problema, ho messo gli attributi di seguito in XML

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

lavoro. Html.fromHtml("text1 <br> text2").toString()funziona anche.


Questo è ancora rilevante, grazie! Avevo maxLines, ma non avevo singleLine = false.
blast_hardcheese,

Questa è l'unica soluzione che ha funzionato da me. Grazie!
Silas,

8

Assicurati che \nsia pronto "\n"per farlo funzionare.


7

Questo ha risolto il mio problema.

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


5

Un modo per farlo è usare i Htmltag ::

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

5

Se esegui il debug, vedrai che la stringa è effettivamente "\ \r\ \n"o "\ \n", cioè, è scappata. Quindi, se massaggiate quella corda, per sbarazzarvi degli extra \, avrete la vostra soluzione. Questo è vero soprattutto se stai leggendo da un database.


5

Devi inserire il file "\n"nel strings.xmlfile non all'interno del layout di pagina.


Questo ha funzionato per me, in cui Visual Editor aggiungeva barre rovesciate extra cercando di visualizzare la barra rovesciata in \ n
dp2050

4

Devo mantenere

1.android:maxLines="no of lines"

2.E utilizzare \nper ottenere le linee successive


4

Per me la soluzione era aggiungere la seguente riga al layout:

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

E \ n si presenta come una nuova riga nell'editor visivo. Spero che sia d'aiuto!


1
Non sono sicuro che sia collegato alla domanda :)
Suleyman,

Ho avuto lo stesso problema che invece di una nuova riga la stringa "\ n" si è appena mostrata. Quando ho aggiunto la riga sopra, questo non è più il caso e la nuova linea è apparsa
Rob,

1
Forse è perché stavi usando tools:texte non android:textcome l'OP, ma comunque scusa per il disturbo :)
Suleyman

Penso che avrei dovuto chiarirlo meglio, grazie al tuo commento che ho fatto ora :) android:textPenso che sia solo un bug dell'editor visivo, come suggerisce la risposta accettabile, ma è più comodo poterlo vedere :)
Rob,

Sì, ho capito ora, hai ragione, è più comodo :) grazie
Suleyman,

4

Inoltre puoi aggiungere &lt;br&gt;invece di\n.

E quindi puoi aggiungere testo a TexView:

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

Non nell'XML non puoi. Fornisce un errore di compilazione: android:textnon può contenere <o> caratteri.
Timmmm,

3

Devi inserire \nil filestring.xml

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

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

Questo funzionerà.


No, non lo fa.
Shazbot,

<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Prev Line & # 10; New LIne" /> Devi eseguirlo nell'emulatore per vederlo funzionare. Grazie
Viral Parmar,

2

Prova:

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

Nel file Java.


3
Fornisci una risposta adeguata alla domanda, altrimenti usa il commento
DjSh

1

La risposta di RuDrA05 è buona, quando modifico l'XML su Eclipse non funziona, ma quando modifico l'XML con Notepad ++ funziona.

La stessa cosa accade se leggo un file txt salvato con eclipse o notepad ++

Forse è correlato alla codifica.


1

Funziona benissimo. Controllalo per la tua app.

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

1

Nota a margine: scrivere in maiuscolo il testo usando

android:inputType="textCapCharacters"

o simile sembra fermare il \nfunzionamento.


1

Assicurati di utilizzare your_package.R e nonandroid.R


1

Prova questo:

android:text="Lorem Ipsum \nDolor Ait Amet \nLorem Ipsum"

0

per la nuova riga in TextView basta aggiungere \ n al centro del testo che funziona ..


ma la risposta si riferisce al link della domanda Non alla "TUA" domanda ...
Nikhil Borad,

omg..scusa confuso da me. modifica la tua risposta .. cambio il mio voto positivo.
Ranjith Kumar,

1
ehi prima modifica la tua risposta. altrimenti non posso cambiare il mio voto.
Ranjith Kumar,

0

Se TextView è in qualsiasi layout (LinearLayout per esempio), prova a cambiare l'attributo di orientamento in verticale come android:orientation="vertical"per il layout o modifica l' TextViewattributo android:singleLine="true"per creare una nuova riga dopo di esso.


0

A livello di programmazione: myTV.setText ("My Text" + "\ n" + myString);


0

Crea una stringa in stings.xml

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

Quindi nel tuo codice fai riferimento alla stringa

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.