Android EditText:无法在两个情感图标

时间:2016-01-07 04:34:32

标签: android

我正在使用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)输入一些图标后,它看起来像这样(我在打字后手动移动了光标)

enter image description here

我为此EditText添加了一个TextWatcher。来自TextWatcher的日志信息:

<img src='115'/><img src='116'/><img src='117'/><img src='118'/>

(3)然后我按下键盘上的'y'(在前一个屏幕截图的位置)。之后光标移动但文本未显示。如下面的屏幕截图enter image description here

但是日志信息显示文本已成功插入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'/>

有什么建议吗?非常感谢。

2 个答案:

答案 0 :(得分:2)

将Spannable.SPAN_INCLUSIVE_EXCLUSIVE更改为Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

希望它有所帮助。

答案 1 :(得分:1)

由于SpannableString内容是不可变的,因此它可能不允许您在两个表情符号之间进行编辑,而不是尝试使用其内容和标记都可以更改的SpannableStringBuilder。希望它会有所帮助