我正在使用SpannableString将情感图标插入EditText。
以下四种情况都可以:
(1)在EditText末尾附加文字或情感图标,
(2)在文本之间插入情感图标,
(3)在现有情感图标之间插入情感图标。
(4)在现有文本之间插入文本。
但问题是我无法在这些图标之间插入文字。这是我的代码和logcat信息。
(1)向EditText添加图标:
Drawable d = UiUtil.getCachedDrawable(mActivity, EmResource.findResIdByTag(value));
if (d != null) {
d.setBounds(0, 0, w, w);
String str = "<img src='" + value + "'/>";
SpannableString ss = new SpannableString(str);
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);
ss.setSpan(span, 0, str.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
contentEt.getText().replace(contentEt.getSelectionStart(), contentEt.getSelectionEnd(), ss);
}
(2)输入一些图标后,它看起来像这样(我在打字后手动移动了光标):
我为此EditText添加了一个TextWatcher。来自TextWatcher的日志信息:
<img src='115'/><img src='116'/><img src='117'/><img src='118'/>
(3)然后我按下键盘上的'y'(在前一个屏幕截图的位置)。之后光标移动但文本未显示。如下面的屏幕截图:
但是日志信息显示文本已成功插入EditText。
<img src='115'/><img src='116'/>y<img src='117'/><img src='118'/>
<img src='115'/><img src='116'/>yy<img src='117'/><img src='118'/>
<img src='115'/><img src='116'/>yyy<img src='117'/><img src='118'/>
有什么建议吗?非常感谢。
答案 0 :(得分:2)
将Spannable.SPAN_INCLUSIVE_EXCLUSIVE更改为Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
希望它有所帮助。
答案 1 :(得分:1)
由于SpannableString内容是不可变的,因此它可能不允许您在两个表情符号之间进行编辑,而不是尝试使用其内容和标记都可以更改的SpannableStringBuilder。希望它会有所帮助