Android:在结果中突出显示用户输入的单词

Android:在结果中突出显示用户输入的单词,android,Android,我的应用程序实现了Sqlite FTS(和Android搜索工具)。我希望文本视图中的结果突出显示输入的单词/字符串 如果用户输入字符串“Cats rule”,我想让这两个单词在所有返回的结果集中以不同的字体颜色出现 谁能给我指路吗 如果需要此信息,我正在将ListView与CursorAdapter一起使用 多谢各位 更新 代码突出显示了一个单词。但如果一个单词出现多次,它只会突出显示该单词的最后一次出现 final SpannableStringBuilder spannableEng =

我的应用程序实现了Sqlite FTS(和Android搜索工具)。我希望
文本视图中的结果突出显示输入的单词/字符串

如果用户输入字符串“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
我解决了。请看下面我的答案

如果有人在寻找类似问题的答案

  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 foregroundcolorsspan spanEng=新foregroundcolorsspan(Color.RED)在您的循环中