搜索这个功能。
需求是对搜索到的指定字符进行高亮显示。
效果如下:
public SpannableString matcherSearchText(String text, String keyword) {
SpannableString ss = new SpannableString(text);
Pattern pattern = Pattern.compile(keyword);
Matcher matcher = pattern.matcher(ss);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
ss.setSpan(new TextAppearanceSpan(getActivity(), com.android.settings.R.style.serach_color_style), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//new ForegroundColorSpan(color)
}
return ss;
}
SpannableString spannableString =fragment.matcherSearchText(result.title.toString(), fragment.getQuery());
titleView.setText(spannableString);
<style name="serach_color_style">
<item name="android:textColor">#579DFF</item>
</style>
上面的serach_color_style ,设一个你想要的颜色值就可以了。