0
SpannableStringBuilder str = new SpannableStringBuilder(decimalFormat.format(prizes[0])
    + "€");
str.setSpan(new StyleSpan(BOLD), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

money.setText("paid | " + str);

このコードは、このコードと同じ結果を生成する必要があります

money.setText(Html.fromHtml("paid | <strong>" + decimalFormat.format(prizes[0]) 
    + "€&lt;/strong>")

しかし、そうではありません!私のテキストは太字になりませ。1つは次のように太字にします: これは、パフォーマンスが向上し、ネイティブのAndroid機能を使用したいと言われているため、このように表示したい方法です。これを使用すると、次のように表示されます 。の代わりに使ってみましたが、それでも何も変わりませんでした。私は何を間違っていますか?fromHtml()SpannableStringBuilderSpannableStringSpannableStringBuilder

私のmoney変数はTextView.

4

2 に答える 2

1

問題は、お金のテキストビューの最後に文字列を設定していることです。スパンされた文字列である必要があります。

これで確認してください:

String sMoney = decimalFormat.format(prizes[0]) + "€";

SpannableString styledString = new SpannableString("paid | " + sMoney);

//スパン可能な文字列に「paid |」を追加したため、このコード行は重要です

styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, styledString.length, 0);

money.setText(styledString);
于 2016-12-26T12:53:10.230 に答える
0

私は自分で答えを見つけました。以前に試したことは確かでしたが、次のように機能します:textView.setText(spannableStringBuilder)の代わりにtextView.setText(someString + spannableStringBuilder).

したがって、私のコードは次のようになります。

SpannableStringBuilder str = new SpannableStringBuilder("paid | "
    +  decimalFormat.format(prizes[0]) + "€");
str.setSpan(new StyleSpan(BOLD), 7, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

money.setText(str);
于 2016-12-26T12:50:15.983 に答える