使用SpannableStringBuilder时,为什么我的文本没有显示样式?

MC *_*ror 6 android spannablestring

我有一个SpannableString对象的问题.

下面是一个简短的例子:

SpannableString spanstr = new SpannableString("Bold please!");
spanstr.setSpan(new StyleSpan(Typeface.BOLD), 0, spanstr.length(), 0);

SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(spanstr);
sb.append("\n"); // A newline
sb.append("The first line is bold. This one isn't.");

CharSequence cq = sb.subSequence(0, sb.length());
// ^There's no such method to return a SpannableString,
// so I try to return a CharSequence instead.

// And then, at last:
TextView contentView = (TextView) findViewById(R.id.some_id);
contentView.setText(cq);
Run Code Online (Sandbox Code Playgroud)

这个例子试图做的是显示:

请大胆!
第一行是粗体.这个不是.

但问题是:文本的第一行不会以粗体显示.

为什么不这样做呢?

Eld*_*abu 18

使用spannable字符串构建器在textview中设置为文本:

contentView.setText(sb);
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做:

SpannableStringBuilder spanstr = new SpannableStringBuilder("Bold please!");
spanstr.setSpan(new StyleSpan(Typeface.BOLD), 0, spanstr.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanstr.append("\n");
spanstr.append("The first line is bold. This one isn't.");
contentView.setText(spanstr);
Run Code Online (Sandbox Code Playgroud)