2016-12-26 3 views
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); 

を適用しません。このコードは、このコードアンドロイドSpannableString(ビルダー)はスタイル

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

と同じ結果を生成しなければならない。しかし、それはしていません!私のテキストはではないが出てくる太字 here上で、彼らはそれがパフォーマンスに優れていると私はネイティブのAndroid funtionsを使用したいと言ったので、これは私がそれを表示する方法です: fromHtml() 1は、このようにし、太字にしません。 SpannableStringBuilderを使用すると、次のように表示されます。 太字ではありません。私はまた、SpannableStringBuilderの代わりにSpannableStringを使ってみましたが、それでも何も変わりませんでした。私は間違って何をしていますか?

My money変数はTextViewです。

答えて

0

私は自分自身で答えを見つけました。私は前にそれを試みたと確信していましたが、textView.setText(someString + spannableStringBuilder)の代わりにtextView.setText(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); 
+2

正しいです。 '+'演算子は* string *連結で、 'str'を' SpannableStringBuilder'から無フォーマットの文字列に変換します。 'TextUtils.concat()'を使用して複数の 'CharSequence'オブジェクトを連結します。これは' String'オブジェクトと 'Spannable'オブジェクトで動作し、スパンを維持します。 – CommonsWare

+2

または 'SpannableStringBuilder#insert()'メソッド – pskink

1

あなたはお金のTextViewの最後に文字列を設定すると問題があります。スパン文字列でなければなりません。

この1に確認してください:

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

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

//私が追加したので、このコード行が重要である "支払っ|" spannable文字列で

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

money.setText(styledString); 
+0

はいこれは私の回答に既に掲載しています。 – creativecreatorormaybenot

関連する問題