String Recurso nova linha / n não é possível?

167

Não parece possível adicionar uma nova linha /na uma sequência de recursos XML. Existe outra maneira de fazer isso?

Andi Jay
fonte
12
você quer dizer \ n? Você tem um exemplo?
Keith
1
É suposto ser \ n. Funciona para mim
akash89
1
@anandtripathi, revirei a sua edição porque tornava as respostas sem sentido. O OP usou incorretamente \ n em vez de / n, que é a essência da pergunta. Não devemos corrigir o código do OP, mas apenas o corpo da pergunta, para as raisons óbvias
Vega

Respostas:

382

use uma barra preta e não uma para a frente. \n

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello\nWorld!</string>
</resources>

Além disso, se você planeja usar a string como HTML, pode usar &lt;br /&gt;para uma quebra de linha ( <br />)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>
James
fonte
3
No strings.xml, somente o formato HTML aceita, então & lt; br / & gt; é a solução apropriada fornecida
akash89
Quero mencionar algo para pessoas como eu que acessam esta página por causa do Android Studio. No AS, quando você extrai uma string usando a ferramenta do IDE, ela remove automaticamente os caracteres de nova linha. Você pode adicioná-los manualmente novamente e funcionará bem. Não sei por que isso acontece.
George Rautenbach
\ n não funciona para mim, nem altere a linha nem a string possui / n. Você sabe por quê ? nem pressione enter entra em trabalhos, que disseram em outras respostas
Thelouras
52

Eu sei que esta é uma pergunta bastante antiga, mas ela encabeçou a lista quando procurei. Então, eu queria atualizar com outro método.

No arquivo strings.xml, você pode fazer o \ n ou simplesmente pressionar enter:

<string name="Your string name" > This is your string.

   This is the second line of your string.\n\n Third line of your string.</string>

Isso resultará no seguinte no seu TextView:

Esta é a sua string.

Esta é a segunda linha da sua string.

Terceira linha da sua corda.

Isso ocorre porque houve dois retornos entre a declaração inicial da string e a nova linha. Também adicionei o \ n para maior clareza, pois ambos podem ser usados. Eu gosto de usar os retornos de carro no xml para poder ver uma lista ou qualquer string de várias linhas que eu tenho. Meus dois centavos.

Dimesio
fonte
3
Oh isso é interessante. obrigado por compartilhar. Além disso, eu me sinto um idiota por fazer essa pergunta, mas parece que ajudou muitas pessoas. RI MUITO!!
Andi Jay
4
Duas quebras de linha sucessivas são tratadas pelo (pelo menos versões atuais do) Android como apenas um espaço. github.com/paour/StringResourceTest
Pierre-Luc Paour
19

Esta é uma pergunta antiga, mas descobri que quando você cria uma string como esta:

<string name="newline_test">My
New line test</string>

A saída do seu aplicativo será assim (sem nova linha)

My New line test

Quando você coloca a string entre aspas

<string name="newline_test">"My
New line test"</string>

a nova linha aparecerá:

My 
New line test
Peter
fonte
1
Funciona para mim, mas, lembre-se, quando você estiver definindo recursos como acima, evite usá-lo Html.fromHtml. Obrigado
Ahmad Reza Enshaee,
A disposição da seqüência de linhas múltiplas entre aspas funcionou perfeitamente. Muito melhor do que colocar em \nqualquer lugar (o que pode rapidamente se tornar ilegível e confuso). Escusado será dizer, mas apenas no caso: se você quiser ter uma citação literal no seu texto, você deve \"
evitá-
4

Se você colocar "\ n" em uma string no arquivo xml, será considerado "\\ n"

Então eu fiz :

text = text.Replace("\\\n", "\n");   ( text is taken from resX file) 

E então eu pulo uma linha na tela

flamandier
fonte
3
Só acontece quando você adiciona a string ao assistente. Se você editar o xml funciona
Daniel Argüelles
Eu cometi esse erro também. Obrigada pelo Conselho. Mas acabei de corrigir todas as aparências de mim mesmo.
Kanat
Não é uma boa solução. Você deve obter o texto dos recursos e usá-lo diretamente. E se você tiver que lidar com mais caracteres especiais? Você vai escrever mais código para eles também? E se você tiver casos extremos?
dephinera
3

Ao usar o editor de traduções no Android Studio, clique no ícone à direita (ou use Shift-Enter) e adicione quebras de linha usando return. Isto irá inserir \ n corretamente no string.xml localizado.

Torkel Börjeson
fonte
Muito obrigado por esta resposta.
Simples
2
Não há ícone à direita e Shift-Enter pula para o próximo texto acima, pelo menos no ubuntu.
Tibor Nagy
3

Na versão mais recente do Android studio, "\ n" será impresso como deveria estar lá, a menos que toda a sequência esteja apóstrofe

Por exemplo:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">"Hello\nWorld!"</string>
</resources>
Sventra
fonte
Como posso fazer duas linhas de interrupção?
jvargas 10/06
1

Muito simples, basta colocar
\ n onde quer que você queira quebrar a linha no seu recurso de string.

Por exemplo

String s = my string resource have \n line break here;

Ali Nawaz
fonte
Como posso fazer duas linhas de interrupção?
jvargas 10/06
1

não coloque espaço depois \ n, caso contrário, não funcionará. Não sei o motivo, mas esse truque funcionou muito bem para mim.

SaloniGupts
fonte
0

Eu quero expandir esta resposta. O que eles quiseram dizer é este ícone:

Botão da janela do editor

Ele abre uma "janela real do editor" em vez da caixa de texto com recursos limitados na grande visão geral. Nessa janela do editor, caracteres especiais, quebras de linha etc. são permitidos e convertidos no "código" xml correto quando salvos

Patrick
fonte
0

Eu apenas enfrentei esse problema. não funcionou TextViewcom parâmetros de restrição. A adição android:lines="2"parece corrigir isso.

Hill Karimov
fonte