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>")

但事实并非如此!我的文字不是粗体fromHtml()确实让它像这样大胆: 这 就是我希望它出现的方式,因为在这里他们说它的性能更好,我想使用原生的 android 功能。使用SpannableStringBuilder它显示如下: 没有粗体。我也尝试过使用SpannableString而不是SpannableStringBuilder,但这也没有改变任何东西。我究竟做错了什么?

我的money变量是一个TextView.

4

2 回答 2

1

问题在于您在货币文本视图的最后设置了一个字符串。它应该是一个跨接字符串。

检查这个:

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

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

//这行代码很重要,因为我在spannable string中添加了“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 回答