专栏首页非著名程序员【有人@我】Android中高亮变色显示文本中的关键字

【有人@我】Android中高亮变色显示文本中的关键字

应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助,我终于在歪路上回归正途了。这个篇文章在平时应该还算比较常用吧,如果你会了,就不用看了,如果还不会,可以看一眼,非常简单。

今天分享的文章大概内容是在TextView中如何使大段的文字内容中关键字变色高亮显示的,分为一个关键字高亮变色显示和多个关键字一起高亮变色显示。我已经封装成了KeywordUtil工具类,可以直接调用,效果图如下:

具体代码如下:

package net.loonggg.test;



import java.util.regex.Matcher;
import java.util.regex.Pattern;


import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;


public class KeywordUtil {


 /**
  * 关键字高亮变色
  * 
  * @param color
  *            变化的色值
  * @param text
  *            文字
  * @param keyword
  *            文字中的关键字
  * @return
  */
 public static SpannableString matcherSearchTitle(int color, String text,
 String keyword) {
 SpannableString s = new SpannableString(text);
 Pattern p = Pattern.compile(keyword);
 Matcher m = p.matcher(s);
 while (m.find()) {
 int start = m.start();
 int end = m.end();
 s.setSpan(new ForegroundColorSpan(color), start, end,
 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 }
 return s;
 }


 /**
  * 多个关键字高亮变色
  * 
  * @param color
  *            变化的色值
  * @param text
  *            文字
  * @param keyword
  *            文字中的关键字数组
  * @return
  */
 public static SpannableString matcherSearchTitle(int color, String text,
 String[] keyword) {
 SpannableString s = new SpannableString(text);
 for (int i = 0; i < keyword.length; i++) {
 Pattern p = Pattern.compile(keyword[i]);
 Matcher m = p.matcher(s);
 while (m.find()) {
 int start = m.start();
 int end = m.end();
 s.setSpan(new ForegroundColorSpan(color), start, end,
 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 }
 }
 return s;
 }
}

本文分享自微信公众号 - 非著名程序员(non-famous-coder),作者:耿广龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于 Android 实现滑动返回的几种方法总结

    关于 Android 实现滑动返回的方法,网上有很多种,实现的方式也都各不一样。有用 SwipeBackLayout 开源库的,有用 SlidingPaneLa...

    非著名程序员
  • 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder

    前言 昨天开始接触江湖口碑很好的RecyclerView,事实上,我已经被她的强大所征服了!资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦...

    非著名程序员
  • Android学习笔记(一)之仿正点闹钟时间齿轮滑动的效果

    看到正点闹钟上的设置时间的滑动效果非常好看,自己就想做一个那样的,在网上就开始搜资料了,看到网上有的齿轮效果的代码非常多,也非常难懂,我就决定自己研究一下,现在...

    非著名程序员
  • 《C++那些事》项目概要及一文彻底搞懂C和C++中struct

    最近一直在更新一个仓库:《C++那些事》,将自己学习的难点与重点罗列进去,并配上相关代码,实践与理论结合。

    公众号guangcity
  • Android SurfaceView预览变形完美解决方法

    这个问题百度上一搜一大把,基本上都是说找到和SurfaceView的比例相近的camera预览尺寸,但是发现预览时候还是差了点意思,具体看下面这个回调就知道是为...

    砸漏
  • 2015年javaB组1-4题解析与理解

    X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:

    萌萌哒的瓤瓤
  • java设计模式之策略模式

    策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类...

    小小鱼儿小小林
  • 【未完成】7-8 最长有效括号串 (20 分)13分

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    韩旭051
  • HDU 2087 剪花布条(裸KMP)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Ch_Zaqdt
  • java设计模式(13)-策略模式

    爱敲代码的猫

扫码关注云+社区

领取腾讯云代金券