【发布时间】:2018-01-04 15:59:09
【问题描述】:
这个问题很烦人,所以我会一点一点地追踪它,以便你完全理解它:-
首先我选择编辑文本中的最后一个单词,如下所示:-
到目前为止如此简单,然后我通过单击按钮(设置粗体跨度)使文本变为粗体,如下所示:-
下划线只是软键盘中的默认文本更正。然后我重新选择文本:-
然后,当我以相同的方式将其设置为斜体时(通过按下按钮设置斜体跨度),我得到了:-
最后一个字符从粗体中分离出来。这仅在我选择单词并且该单词位于编辑文本的end的特定情况下发生。 p>
我还发现,当为每个字符设置跨度时,如果整个单词都没有发生(粗体和斜体),则会出现此问题:-
//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);
}
当然,用户可以为字符设置跨度,因此问题仍然存在,否则如果在编辑文本末尾未选择该单词,则不会出现问题。
【问题讨论】:
标签: android android-edittext spannablestring spanned