这几天刚还在研究这个东东,简单写几句。
主要使用两个Span即可实现:SuggestionSpan 和 EasyEditSpan
部分实现代码如下,
1.关于SuggestionSpan的
//不能共用Span,否则只有最后一个生效/////////非常重要 SuggestionSpan ss1 = new SuggestionSpan(this, new String[]{"123", "456", "789"},SuggestionSpan.FLAG_AUTO_CORRECTION); ss1.setFlags(SuggestionSpan.FLAG_AUTO_CORRECTION);//蓝色 /////////// SuggestionSpan ss2 = new SuggestionSpan(this, new String[]{"hello", "hi", "bye"},SuggestionSpan.FLAG_AUTO_CORRECTION); ss2.setFlags(SuggestionSpan.FLAG_EASY_CORRECT);//灰色 SuggestionSpan ss3 = new SuggestionSpan(this, new String[]{"你好", "再见", "谢谢"},SuggestionSpan.FLAG_AUTO_CORRECTION); ss3.setFlags(SuggestionSpan.FLAG_MISSPELLED);//无色 SpannableString str = new SpannableString("我们是一家人 对不对 是不是"); str.setSpan(ss1, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);//只有最后一个生效 str.setSpan(ss2, 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING); str.setSpan(ss3, 11, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING); ic.commitText(str, 1);
2.关于EasyEditSpan的
SpannableString spanText = new SpannableString("我们是一家人"); spanText.setSpan(new EasyEditSpan(), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); ic.commitText(spanText, 1);
注意:所有需要发送到输入框的Span必须实现了ParcelableSpan,没有实现这个接口的Span之能用于TextView中。