Android:突出显示结果

时间:2017-09-18 11:59:55

标签: android

我的应用实现了Sqlite FTS(以及Android搜索工具)。我希望TextView中的结果突出显示输入的单词/字符串。

如果用户输入字符串“Cats rule”,我想在所有返回的结果集中使这两个单词显示不同的字体颜色。

任何人都可以指导我。

如果需要此信息,我将ListViewCursorAdapter一起使用。

谢谢。

更新

代码突出显示一个单词。但如果有多次出现,它只突出显示一个单词的最后一次出现

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 我解决了请看下面的答案。

1 个答案:

答案 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);在您的循环中。