Como adiciono uma nova linha a um TextView no Android?

253

Quando defino um TextViewin xml, como adiciono uma nova linha a ele? \nparece não funcionar.

<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
fonte
1
Seu código funciona para mim. O que você recebe em vez do texto de múltiplas linhas?
molnarm
2
No editor visual, ele é mostrado como textual \ n
Pentium10 15/05

Respostas:

293

Não confie no editor Visual. Seu código funciona na ema.

Macarse
fonte
bem, no meu caso, o editor visual estava dizendo a verdade. Ele estava adicionando outra barra invertida para exibir a barra invertida. A maneira correta foi colocar o texto dentro do arquivo xml.
dp2050 7/04
79

Experimentar:

android:lines="2"

\n Deveria trabalhar.

cristão
fonte
1
minha visualização de texto pode ter mais de 2 linhas. É um controle. Pode ser qualquer coisa.
dropsOfJupiter
44

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

kakopappa
fonte
38

Eu acho que isso tem algo a ver com a sua HTM.fromHtml(subTitle)chamada: um "\ n" não significa bupkis para HTML. Tente em <br/>vez de "\ n".

resnbl
fonte
25
@androidevAlex Isso é porque é <br/>, não </br>
Ilya Kogan
21

Primeiro, coloque isso na sua visualização de texto:

android:maxLines="10"

Então use \n o texto da sua visualização de texto.

maxLines faz com que o TextView tenha no máximo esse número de linhas. Você pode escolher outro número :)

aF.
fonte
19

Tentei tudo isso acima, fiz algumas pesquisas, resultando na seguinte solução para renderizar caracteres de escape de feed de linha:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. Usando o método de substituição, você precisa filtrar as alimentações de linha com escape (por exemplo '\\\n')

  2. Somente então cada instância dos '\n'caracteres de escape do feed de linha é renderizada no feed de linha real

Para este exemplo, usei um banco de dados noSQL (ScriptDb) do Google Apps com dados formatados em JSON.

Saúde: D

Robert
fonte
1
Isso funcionou para mim: replace ("\\ n", System.getProperty ("line.separator"));
Página
em vez disso, 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" />

Eu acho que isso vai funcionar.

user3578286
fonte
8

Meus 2 centavos, usando Android TV.

Adicione \ncadeias XML, enquanto lê:

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

Eu apenas resolvo o mesmo problema, coloque abaixo os atributos em xml

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

trabalhos. Html.fromHtml("text1 <br> text2").toString()também funciona.

Ben Wong
fonte
Isso ainda é relevante, obrigado! Eu tinha maxLines, mas não tinha singleLine = false.
blast_hardcheese
Esta é a única solução que funcionou comigo. Obrigado!
Silas
8

Verifique se você \nestá preparado "\n"para que ele funcione.

Justin
fonte
7

Isso resolveu meu problema.

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

System.getProperty("line.separator"); este trabalho para mim.

João Victor
fonte
5

Uma maneira de fazer isso é usar Htmltags:

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

Se você depurar, verá que a string é realmente "\ \r\ \n"ou "\ \n", ou seja, escapou. Então, se você massagear essa corda, para se livrar do extra \, terá sua solução. Isso é verdade especialmente se você estiver lendo de um banco de dados.

Tilottama Gaat
fonte
5

Você precisa colocar o "\n"no strings.xmlarquivo não dentro do layout da página.

epicness42
fonte
Isso funcionou para mim, onde o Visual Editor estava adicionando barras invertidas extras tentando exibir a barra in \ n
dp2050
4

Precisa manter

1android:maxLines="no of lines"

2.E use \npara obter as próximas linhas

Danny
fonte
4

Para mim, a solução foi adicionar a seguinte linha ao layout:

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

E \ n aparece como uma nova linha no editor visual. Espero que ajude!

Roubar
fonte
1
Eu não tenho certeza se ele está relacionado com a questão :)
Suleyman
Eu tive o mesmo problema que, em vez de uma nova linha, a string "\ n" apenas apareceu. Quando eu adicionei a linha acima desta wans't mais o caso ea nova linha apareceu
Rob
1
Talvez seja porque você estava usando tools:texte não android:textcomo o OP, mas mesmo assim muito por perturbar :)
Suleyman
Eu acho que deveria ter esclarecido melhor, graças ao seu comentário que fiz agora :) Eu uso android:textEu acho que é apenas um bug do editor visual, como a resposta do Acceptet sugere, mas é mais confortável poder vê-lo :)
Rob
Sim, eu entendo agora, você está certo, é mais confortável :) graças
Suleyman
4

Além disso, você pode adicionar em &lt;br&gt;vez de\n.

E então você pode adicionar texto ao TexView:

articleTextView.setText(Html.fromHtml(textForTextView));
mobiledev Alex
fonte
Não no XML que você não pode. Dá um erro de compilação - android:textnão pode conter caracteres <ou>.
Timmmm
3

Você precisa colocar \nno arquivostring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>
simmash
fonte
2
 android:text="Previous Line &#10; Next Line" 

Isso vai funcionar.

Viral Parmar
fonte
Não, não faz.
Shazbot 11/08/19
<TextView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: singleLine = "false" android: text = "Linha anterior & # 10; Nova linha" /> Você precisa executar no emulador para vê-lo funcionar. Obrigado
Viral Parmar
2

Apenas tente:

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

No arquivo Java.

user11705013
fonte
3
Por favor, forneça uma resposta para a pergunta, caso contrário use comentário
DjSh
1

A resposta do RuDrA05 é boa: quando edito o XML no eclipse, ele não funciona, mas quando edito o XML com o bloco de notas ++, ele funciona.

O mesmo está acontecendo se eu ler um arquivo txt salvo com eclipse ou notepad ++

Talvez esteja relacionado à codificação.

Sebastian Corradi
fonte
1

Isso funciona bem. Verifique o seu aplicativo.

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

Nota lateral: Capitalizar texto usando

android:inputType="textCapCharacters"

ou similar parece impedir o \ntrabalho.

Voy
fonte
1

Verifique se você está usando your_package.R e nãoandroid.R

Dror
fonte
1

Tente o seguinte:

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

para a nova linha no TextView, basta adicionar \ n no meio do seu texto.

Nikhil Borad
fonte
mas a resposta relaciona-se com a questão ligação Not "SEU" pergunta ...
Nikhil Borad
omg..Desculpe confuso por mim.Por favor, edite sua resposta .. Eu mudo meu voto positivo.
Ranjith Kumar
1
Ei, primeiro edite sua resposta. senão não posso mudar meu voto.
Ranjith Kumar
0

Se o TextView estiver em qualquer Layout (LinearLayout, por exemplo), tente alterar o atributo de orientação para vertical como android:orientation="vertical"para o layout ou altere o TextViewatributo android:singleLine="true"para criar uma nova linha depois dele.

Pavani
fonte
0

Programaticamente: myTV.setText ("Meu Texto" + "\ n" + myString);

LKS
fonte
0

Crie uma sequência em seu stings.xml

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

Então, no código de referência, a string

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
Trigve Hagen
fonte