问题:在A activity中传递一个SpannableString到B activity中,并最终传递到B activity中的TextView中,但是没有展示出Span效果。
解决:阅读TextView.setText()方法
// If suggestions are not enabled, remove the suggestion spans from the text
if (!isSuggestionsEnabled()) {
text = removeSuggestionSpans(text);
}
...
if (type == BufferType.EDITABLE || getKeyListener() != null
|| needEditableForNotification) {
//略
} else if (precomputed != null) {
//略
} else if (type == BufferType.SPANNABLE || mMovement != null) {
text = mSpannableFactory.newSpannable(text);
} else if (!(text instanceof CharWrapper)) {
text = TextUtils.stringOrSpannedString(text);
}
看到会根据BufferType对传入的text重新赋值,于是回溯找到传入BufferType的地方:
public void setText(CharSequence text, BufferType type) {
setText(text, type, true, 0);
if (mCharWrapper != null) {
mCharWrapper.mChars = null;
}
}
公有方法,传入BufferType,查看BufferType:
/*