第一个setSpan没有用

时间:2013-07-25 11:52:18

标签: android spannablestring

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 BOLD 。但只有类型是BOLD。

我错过了什么?

3 个答案:

答案 0 :(得分:7)

根据文件:

  

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

StyleSpan只能在Spannable中使用一次。您需要为每个texttype

创建一个StyleSpan

答案 1 :(得分: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)

答案 2 :(得分:0)

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

CharacterStyle.wrap(CharacterStyle c)