这个问题很烦人,所以我将一点一点地追踪它,以便您完全理解它:-
首先,我选择编辑文本中的最后一个单词,如下所示:-
到目前为止如此简单,然后我通过单击按钮(设置粗体跨度)使文本变为粗体,如下所示:-
下划线只是软键盘中的默认文本更正。然后我重新选择文本:-
然后,当我以相同的方式使其斜体(通过按下按钮设置斜体跨度)时,我得到了:-
最后一个字符从粗体中分离出来。这只发生在这种特定情况下,当我选择单词并且单词位于编辑文本的末尾时。
我还发现,当为每个字符设置跨度时,如果整个单词没有发生(粗体和斜体),则会出现此问题:-
//for each char
for (int i = 0; i < token.length(); i++) {//token is the word
SpannableString char = (SpannableString) token.subSequence(i, i + 1);
char.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), 0,
char.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
但是,如果没有发生整个单词的问题:-
// for the whole word
token.setSpan(new android.text.style.StyleSpan(Typeface.BOLD), 0,
token.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
但当然,用户可以为 char 设置跨度,因此问题仍然存在,否则如果在编辑文本末尾未选择该单词,则不会出现问题。