Android(安卓)搜索结果关键字动态匹配筛选变色效果且高亮显示
16lz
2021-01-26
分享matcherSearchText方法,返回值是SpannableString,也就是经过我们经过变色处理的文字。主要使用matcher.find()方法找到所有匹配的关键字,按照惯例我们看下效果图
下面就是matcherSearchText方法啦
/** * 正则匹配 返回值是一个SpannableString 即经过变色处理的数据 */ private SpannableString matcherSearchText(int color, String text, String keyword) { SpannableString spannableString = new SpannableString(text); //条件 keyword Pattern pattern = Pattern.compile(keyword); //匹配 Matcher matcher = pattern.matcher(new SpannableString(text.toLowerCase())); while (matcher.find()) { int start = matcher.start(); int end = matcher.end(); //ForegroundColorSpan 需要new 不然也只能是部分变色 spannableString.setSpan(new ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } //返回变色处理的结果 return spannableString; }
SpannableString string = matcherSearchText(ResourceUtils.getColor(R.color.TextPrimary), text, mKeyword);tv_search_suggest.setText(string);
好了,本篇文章就这样啦,存在不到位的地方还望指导,感谢~
更多相关文章
- Android结束整个应用程序的两个方法
- Android到底那个Acitivity启动(二)
- Android(安卓)MediaPlayer的生命周期
- Android(安卓)View重绘和更新: invalidate和requestLayout
- Android(安卓)Studio Gradle 更换阿里云镜像的方法
- EventBus源码解析-总结篇
- AIDL用法总结
- Android架构组件(3)LiveData框架
- Android之TabLayout使用和默认选中+移动(解决)