我的应用实现了Sqlite FTS(以及Android搜索工具)。我希望TextView
中的结果突出显示输入的单词/字符串。
如果用户输入字符串“Cats rule”,我想在所有返回的结果集中使这两个单词显示不同的字体颜色。
任何人都可以指导我。
如果需要此信息,我将ListView
与CursorAdapter
一起使用。
谢谢。
更新
代码突出显示一个单词。但如果有多次出现,它只突出显示一个单词的最后一次出现
final SpannableStringBuilder spannableEng = new SpannableStringBuilder(english);
final ForegroundColorSpan spanEng = new ForegroundColorSpan(Color.RED);
for (String word : qStr) {
final Pattern p = Pattern.compile(word, Pattern.CASE_INSENSITIVE);
final Matcher matcher = p.matcher(english);
while (matcher.find()) {
spannableEng.setSpan(
spanEng, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
}
}
viewHolder.engTextV.setText(spannableEng);
更新2 我解决了请看下面的答案。
答案 0 :(得分:0)
如果有人正在寻找类似问题的答案
final SpannableStringBuilder spannableEng = new SpannableStringBuilder(english);
for (String word : qStr) {
final Pattern p = Pattern.compile("\\b"+word+"\\b", Pattern.CASE_INSENSITIVE);
final Matcher matcher = p.matcher(english);
while (matcher.find()) {
final ForegroundColorSpan spanEng = new ForegroundColorSpan(Color.RED);
spannableEng.setSpan(
spanEng, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
}
}
viewHolder.engTextV.setText(spannableEng);
确保final ForegroundColorSpan spanEng = new ForegroundColorSpan(Color.RED);
在您的循环中。