15

複数行の定数 (/res/values/ フォルダーの下の .xml ファイルで定義) を使用しようとしていますが、そこで改行を保持することは不可能のようです - それらはすべてスペースに変換されます。文字列の「フォーマット済み」属性で遊んでみました(「true」と「false」の両方に設定し、次のように文字列をCDATAタグでラップしようとしました:

<string name="str1">
A
B
C
</string>

<string name="str2" formatted="true">
A
B
C
</string>

<string name="str3" formatted="false">
A
B
C
</string>

<string name="str4"><![CDATA[
A
B
C
]]></string>

<string name="str5" formatted="true"><![CDATA[
A
B
C
]]></string>

<string name="str6" formatted="false"><![CDATA[
A
B
C
]]></string>

これらすべての文字列宣言バリアントは、5 文字の文字列 "AB C" (改行を 1 つのスペースに置き換えたもの) という同一の結果を生成します。これを回避する方法はありますか?

PS「\n」を使用して改行を挿入できることは理解していますが、結果の文字列には実際の改行の代わりにスペースが含まれます。すなわち、次の宣言:

<string name="str1">
A\n
B\n
C\n
</string>

結果は文字列 "A\n B\n C\n" (手動で挿入されたすべての改行の後に迷惑なスペースが続きます) になります。回避策はありますか? ...

4

7 に答える 7

25

人々がこれに問題を抱えている場合\n、XML 文字列の最後に挿入するとインデントが発生します。例えば:

<string name="test">
    A\n
    B\n
    C
</string>

として表示されます

A
  B
  C

\n代わりに、 XML 文字列の BEGINNINGに挿入する必要があります

<string name="test">
    A
    \nB
    \nC
</string>

これにより、新しい行が正しく表示されます。

于 2015-07-28T17:45:12.407 に答える
3

XML から改行を追加するには、「\n」を追加する必要があります。

これがあなたのやり方です。

<string name="testing">A\nB\nC</string>

<TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="4"
        android:text="@string/testing"/>

お役に立てれば

于 2013-09-21T22:43:51.583 に答える
3

次のように html ブレークを使用します。

<string name="your_string">
<![CDATA[
<p>
    Here is your text.<br/>
    This text is on a new line.<br/>
    So is this text. \n
    This is on the previous line with a space added.
</p>
]]>
</string>
于 2014-05-21T10:15:35.973 に答える
0

私の2セント。
文字列配列を使用して解決し、リソースをロードしてから、配列の要素を連結しました。
また、長い文字列をそれぞれ別のファイルに入れるのもいいと思います。

String[] storages = getResources().getStringArray(R.array.storages);
String oneline = new String();
    for (int i = 0; i < storages.length; i++) {
        oneline = oneline.concat(storages[i]);
        if (i < storages.length - 1)
            oneline.concat(System.getProperty("line.separator"));
    }
于 2014-05-28T08:22:56.337 に答える
0

最新の Android バージョンでは、ソリューションは 1 つしかありません。

文字列データは次のようになっている必要があります。

<string name="thanks_from_head_shield">
    Mr. Prasanna Sumudu Chandrasekara<br />
    https://www.java2s.com<br />
    https://www.oracle.com/java<br />
    https://www.javatongue.blogspot.com<br />
    https://www.coderwall.com<br />
    https://www.igetintopc.com<br />
    https://www.tutorialspoint.com<br />
    https://stackoverflow.com<br />
    https://www.javatpoint.com<br />
    https://coderanch.com<br />
    https://www.c-sharpcorner.com<br />
    https://javapointers.com<br />
    https://www.fatalerrors.org<br />
    https://dzone.com<br />
    https://www.javamadesoeasy.com<br />
    https://www.geeksforgeeks.org<br />
    https://www.jetbrains.com<br />
    https://www.developer.android.com<br />
    Adobe.Inc<br />
    Thanks for other all softwares I used  and Other<br />
</string>

<br />タグなしでタグを追加できます<![CDATA[...]]>これはAndroid studio 4.2.1で 100% 動作します。ただし、 API Level 30でのみテストしました。@Chris Moore は android studio 4.2.1 では正しくありません。

于 2021-05-15T19:28:36.657 に答える