我需要实现一个所见即所得的 EditText,我一开始就遇到了一个问题。所以我在 onTextChanged 中添加了以下代码:
int textLen = textWord.getText().length();
if (s.length() > textWordBefore.length()) {
if (boldToggle == true) {
textWord.getText().setSpan(new StyleSpan(android.graphics.Typeface.BOLD), textLen-1, textLen, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
我将跨区文本转换为 Html 以查看它是如何工作的。添加符号时效果很好。起初它看起来像这样:
<b>a</b><b>b</b><b>c</b>
然后我按空格键变成这样:
<b>abc</b>
但是当我第一次按退格键时,只有单词的最后一个符号保持粗体。再过一次,整个单词就变得正常了(即不是粗体)。我搜索了很多,尝试在按下退格键时重新应用跨度(如果更改后的文本更短)。我尝试将跨度类型更改为 INCLUSIVE 等。我尝试了 DroidWriter,它与退格键的工作方式相同。
如果我在非粗体字的中间打开粗体,它也不会以应有的方式工作,反之亦然。
我真的很快需要解决方案,我已经使用了几天了。提前致谢!