まず、「正常」のケース(動作しないケース)を見てみましょう。あなたはこのように、いくつかの複数のリソースを持っている:
<plurals name="myplural">
<item quantity="one">only 1 <b>item</b></item>
<item quantity="other">%1$d <b>items</b></item>
</plurals>
そして、あなたはこのようにJavaでそれを使用する:
textView.setText(getResources().getQuantityString(R.plurals.myplural, 2, 2));
あなたが見られるように、これはちょうどあなたがいない太字で「2項目」を参照してくださいようになります。
解決策は、リソース内の<b>
タグを代わりにHTMLエンティティを使用するように変換することです。例:
<plurals name="myplural">
<item quantity="one">only 1 <b>item</b></item>
<item quantity="other">%1$d <b>items</b></item>
</plurals>
これらのhtmlエンティティを処理するために、Javaコードに別のステップを追加する必要があります。 (あなたは、Javaを変更しなかった場合は、 "2 < B>アイテム</B>" を参照してくださいね。)ここで更新されたコードです:
String withMarkup = getResources().getQuantityString(R.plurals.myplural, 2, 2);
text.setText(Html.fromHtml(withMarkup));
今、あなたは成功した "2つの項目" を参照してくださいだろうが。
ありがとうございます!私がオンラインで見つけた最良の説明は、toHtmlとfromHtmlの両方を使用して提供されているので、項目文字列は通常のマークアップになる可能性があります。私はこのアイデアが気に入っています。なぜなら、1つの変換しか必要ないからです。 – user3175580
Googleの独自の開発者向けドキュメントから、このソリューションがどのような価値を持っていますか。 「HTMLマークアップによるスタイル設定」https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStylingを参照してください。 –