EditText添加了ImageSpan后,在两者中间不能输入纯文本

严格来说是连续插入两个ImageSpan之后,在其中间不能够输入纯文本内容。

最后发现问题出现在了SpannableString在设置ImageSpan的时候第四个参数flag的问题。

 spannable.setSpan(span, matcher.start(), matcher.end(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

第四个参数的含义是,在插入的ImageSpan前后内容是否使用Span特性。设置为Spannable.SPAN_EXCLUSIVE_EXCLUSIVE,前后都不包含就搞定了。

第一个参数是设置的内容所用的Span对象(每次setSpan必须new一个新的Span,内部会检查否则只有最后一个才会使用Span);

第二个参数是使用Span的起始位置(包括这个索引);

第三个参数是使用Span的结束位置(不包括这个索引);