リソース/値ファイルからこれらの2つの文字列を連結する必要があります。
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>
私はこのようにします:
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+total_flips+getString(R.string.Toast_Memory_GameWon_part2);
Toast.makeText(this, message_all_pairs_found, 1000).show();
しかし、最初の文字列の最後と2番目の文字列の先頭のスペースは消えました(Toastが表示されている場合)...
私は何をすべきか ?
答えはこの中のどこかにあると思います ドキュメントリンク
または、「&」文字に& ;
を使用するようなものですか?
文字列の書式設定を使用する場合でも、文字列の先頭または末尾に空白が必要な場合があります。これらの場合、\
でのエスケープもxml:space
属性も役立ちません。空白にはHTMLエンティティ 
を使用する必要があります。
分割できない空白には 
を使用します。
通常のスペースには 
を使用します。
私は同じ問題に遭遇しました。画面上のフィールド名を表すリソース文字列の最後に空白を残したかった。
この問題レポートで解決策を見つけました: https://github.com/iBotPeaches/Apktool/issues/124
これは、デュエシが提案するのと同じ考えです。保存したいブランクのXMLに\u0020
を直接挿入します。
例:
<string name="your_id">Score :\u0020</string>
置換はビルド時に行われるため、ゲームのパフォーマンスには影響しません。
この ドキュメント は、引用が機能することを示唆しています。
<string name="my_str_spaces">" Before and after? "</string>
Strings.xmlファイルのスペース「\ u0020」にUTFコードを使用します。
<string name="some_string">\u0020The name of my string.\u0020\u0020</string>
よく働く。 (AndroidはUTFコードが大好きです)
この質問は古いかもしれませんが、現時点で最も簡単な方法は引用符を追加することです。例えば:
<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>
本当にあなたがやっていた方法でそれをやりたいなら、私はあなたがそれをエスケープすることによって空白が関連していることを伝えなければならないと思う。
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>
ただし、これには string format を使用します。次のようなもの:
<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>
それから
String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);
文字列リソース値で「」を使用します。
例:「スペースを含む値」
OR
スペースには\ u0020コードを使用します。
私は\ u0020を使用しています
<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10 </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>
Javaファイル
String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();
スクリーンショットここでこのコードの動作を示す画像
プログラムでスペースを追加するための引数を作成できます。これらのケースは連結で頻繁に使用されるため、狂気を止めて古い+ " " +
を実行することにしました。これらはmostヨーロッパ言語で意味があります。
ここでの答えはすべてうまくいきませんでした。代わりに、XML
の文字列の末尾にスペースを追加するために、これを行いました
<string name="more_store">more store<b> </b> </string>
CDATA
を使用するソリューションもあります。例:
<string name="test"><![CDATA[Hello world]]></string>
しかし、一般的には\u0020
で十分だと思います。
私は特にAndroidについては知りませんが、これは通常のXML空白処理に似ています-要素内の先頭と末尾の空白は一般に重要ではないとみなされ、削除されます。 xml:space
を試してください:
<string name="Toast_Memory_GameWon_part1" xml:space="preserve">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2" xml:space="preserve"> flips !</string>
後で他の文字列と連結するためにスペースが必要な場合は、文字列定義に引数を追加する文字列フォーマットのアプローチを使用できます。
<string name="error_">Error: %s</string>
次に、文字列を次のようにフォーマットします。
String message = context.getString(R.string.error_, "Something went wrong")
これは実際には質問(XMLで空白を保持する方法)に答えないかもしれませんが、根本的な問題をより優雅に解決するかもしれません。
XMLリソースのみに依存する代わりに、フォーマット文字列を使用して連結します。最初に空白を削除します
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on</string>
<string name="Toast_Memory_GameWon_part2">flips !</string>
そして、文字列を異なる方法で構築します。
String message_all_pairs_found =
String.format(Locale.getDefault(),
"%s %d %s",
getString(R.string.Toast_Memory_GameWon_part1),
total_flips,
getString(R.string.Toast_Memory_GameWon_part2);
Toast.makeText(this, message_all_pairs_found, 1000).show();