我希望在用户输入时突出显示edittext上的特定单词我突出显示了单词,但如果我在突出显示的单词之前添加任何文本,则会更改。
@Override
public void afterTextChanged(Editable p1)
{
// TODO: Implement this method
if(highlightSearchKey(p1.toString())!=null){
if(flag){
flag = false;
Spannable highlighted = highlightSearchKey(p1.toString());
p1.replace(0,p1.length(),highlighted);
}
}
选择关键词的方法
private Spannable highlightSearchKey(String title) {
Spannable highlight = null;
Pattern pattern;
Matcher matcher;
int word_index;
String title_str;
word_index = words.length;
title_str = Html.fromHtml(title).toString();
for (int index = 0; index < word_index; index++) {
pattern = Pattern.compile("(?i)" + words[index]);
matcher = pattern.matcher(title_str);
while (matcher.find()) {
highlight = (Spannable) Html.fromHtml(title);
highlight.setSpan(
new ForegroundColorSpan(Color.BLUE),
matcher.start(),
matcher.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return highlight;
}