4
final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD);
final SpannableString ss = new SpannableString("How to " + text + " in " + type);
ss.setSpan(bss, 7, text.length() + 7, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
ss.setSpan(bss, 7 + text.length() + 4, ss.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss);

我想做texttype 大胆。但唯一的类型是粗体。

我错过了什么?

4

3 回答 3

8

根据文档:

setSpan(Object what, int start, int end, int flags) 将指定的标记对象附加到文本的开始...结束范围,或者如果对象已附加到其他位置,则将其移动到该范围。

AStyleSpan只能在 a 中使用一次Spannable。您需要为每个text和创建一个 StyleSpantype

于 2013-07-25T11:57:02.930 回答
0

更好的解决方案是使用静态方法而不是创建多个对象:

CharacterStyle.wrap(CharacterStyle c)
于 2014-02-23T18:42:46.180 回答
0

您应该创建如下对象。

ss.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 7, text.length() + 7, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
ss.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 7 + text.length() + 4, ss.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss)
于 2013-10-23T17:23:19.370 回答