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