这是一个例子。
String source = "This is example text";
Spannable out = new SpannedString(source);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
out.setSpan(boldSpan, 1, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
out.setSpan(boldSpan, 9, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//someTextView.setText(out);
预期结果:T hi s是e xam 文本(“hi”&“xam”是粗体)
实际结果:这是e xam 文本(仅适用于最后一个setSpan方法,粗体仅为“xam”)
如何制作多字节文字?这是可能的?
也许问题出现在 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 标志中?感谢。
答案 0 :(得分:20)
我认为你需要一个新的StyleSpan。
String source = "This is example text";
Spannable out = new SpannedString(source);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
StyleSpan boldSpan2 = new StyleSpan(Typeface.BOLD);
out.setSpan(boldSpan, 1, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
out.setSpan(boldSpan2, 9, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
虽然没试过。
答案 1 :(得分:0)
原因是每个粗体的spannable文本必须由StyleSpan
表示。您的原因与重新分配值相同。