文字列リソースの改行/ nは不可能ですか?


167

/nXMLリソース文字列に新しい行を追加することはできないようです。これを行う別の方法はありますか?


12
つまり、\ n?例はありますか?
キース

1
\ nと想定されています。私のために
働く

1
@anandtripathi、あなたの編集をロールバックしました。回答が無意味になったためです。OPは問題の本質である/ nの代わりに\ nを誤って使用していました。明白な存在理由のために、OPのコードを修正するのではなく、質問の本文のみを修正する必要があります
Vega

回答:


382

スラッシュではなくブラックスラッシュを使用してください。 \n

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

また、文字列をHTMLとして使用する場合&lt;br /&gt;は、改行(<br />)に使用できます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Hello&lt;br /&gt;World!</string>
</resources>

3
strings.xmlでは、受け入れ可能なHTML形式のみなので、&lt; br /&gt; 提供される適切なソリューションです
akash89

Android Studioを使用しているため、このようなページにアクセスした私のような人々に何か言及したいと思います。ASでは、IDEのツールを使用して文字列を抽出すると、自動的に改行文字が削除されます。手動で追加するだけで問題なく動作します。なぜこれを行うのかわかりません。
George Rautenbach、

\ nは機能しません。どちらの文字列にも/ nがある行は変更しません。なぜなのかご存知ですか ?どちらのヒットも機能しない、
The

52

私はこれがかなり古い質問であることを知っていますが、私が検索したときにリストを上回っていました。だから私は別の方法で更新したかった。

strings.xmlファイルでは、\ nまたは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>

これにより、TextViewで次のようになります。

これはあなたのひもです。

これは文字列の2行目です。

文字列の3行目。

これは、文字列の最初の宣言と新しい行の間に2つの戻りがあったためです。どちらも使用できるので、わかりやすくするために\ nも追加しました。xmlでキャリッジリターンを使用して、リストや任意の複数行の文字列を表示できるようにします。私の2セント。


3
ああ、面白いですね。共有してくれてありがとう。また、私はこの質問をするのはばかげているように感じますが、それは多くの人を助けているようです。笑!!
アンディジェイ

4
連続する2つの改行は、Androidの(少なくとも現在のバージョンの)単一のスペースとして扱われます。github.com/paour/StringResourceTest
Pierre-Luc

19

これは古い質問ですが、次のような文字列を作成すると、

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

アプリの出力は次のようになります(改行なし)

My New line test

文字列を引用符で囲んだ場合

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

改行が表示されます:

My 
New line test

1
私にとってはうまくいきますが、念のため、上記のようにリソースを定義するときは、の使用を避けてくださいHtml.fromHtml。ありがとう
Ahmad Reza Enshaee

複数行の文字列を引用符で囲むと完全に機能しました。\nすべての場所に配置するよりもはるかに優れています(すぐに判読できなくなり、混乱する可能性があります)。言うまでもなく、しかし、念のために:あなたは、テキストリテラル引用符を持っているしたい場合、あなたはそれをエスケープする必要があります\"
Nolonar

4

xmlファイルの文字列に「\ n」を含めると、「\\ n」として解釈されます

だから、私はしました:

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

そして、私は画面上でラインジャンプを取得します


3
ウィザードで文字列を追加した場合にのみ発生します。xmlを編集すると機能します
DanielArgüellesJul

私もこの間違いをしました。アドバイスありがとうございます。しかし、私は自分のすべての外観を\ n修正しました。
Kanat

良い解決策ではありません。リソースからテキストを取得して、直接使用する必要があります。より多くの特殊文字を処理する必要がある場合はどうなりますか?あなたも彼らのためにもっと多くのコードを書くつもりですか?エッジケースがある場合はどうなりますか?
デフィネラ2017

3

Android Studioの翻訳エディターを使用する場合は、右側のアイコンをクリックするか、Shiftキーを押しながらEnterキーを押して、改行を追加します。これにより、ローカライズされたstrings.xmlに\ nが正しく挿入されます。


この回答をどうもありがとう。
シンプルな

2
右側にアイコンはなく、Shiftキーを押しながらEnterキーを押すと、少なくともubuntuでは上の次のテキストにジャンプします。
Tibor Nagy

3

Androidスタジオの最新バージョンでは、文字列全体がアポストロフィで囲まれていない限り、「\ n」は本来あるべきように印刷されます。

例えば:

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

2つのブレークラインを作成するにはどうすればよいですか?
jvargas

1

非常に簡単 で、文字列リソースの改行したい場所に
\ nを置くだけです。

例えば

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


2つのブレークラインを作成するにはどうすればよいですか?
jvargas

1

\ nの後にスペースを入れないでください。スペースを入れないと、機能しません。理由はわかりませんが、このトリックは私にはかなりうまくいきました。


0

この答えについて詳しく説明します。彼らが意味したのはこのアイコンです:

エディタウィンドウボタン

大きな概要の限定機能のテキストボックスの代わりに「実際のエディターウィンドウ」を開きます。そのエディターウィンドウでは、特殊文字、改行などが許可され、保存時に正しいxml "コード"に変換されます


0

私はこの問題に直面しました。TextView制約パラメータでは機能しませんでした。追加するandroid:lines="2"とこれが修正されるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.