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

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

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

b0f8421a74d6

效果图

具体代码如下:

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;

}

}

其实看完代码就知道了,非常简单。大家可以试一试哦!获取demo的方法跟以前一样,只需在公众号“非著名程序员”里回复关键字“5”即可获得。

语法高亮 HighlightTextEditor是一个安卓代码语法高亮控件,目前已经支持200多种语言,近90多种主题配色方案,同时支持lua扩展,以及自定义语言配置。强烈推荐,一款不可多得的开源控件。 支持的语言: abap4.lang clojure.lang innosetup.lang nxc.lang s.lang abc.lang clp.lang interlis.lang oberon.lang sas.lang abnf.lang cobol.lang io.lang objc.lang scala.lang actionscript.lang coldfusion.lang jasmin.lang ocaml.lang scilab.lang ada.lang conf.lang java.lang octave.lang scss.lang agda.lang crk.lang js.lang oorexx.lang sh.lang algol.lang csharp.lang jsp.lang os.lang small.lang ampl.lang css.lang ldif.lang oz.lang smalltalk.lang amtrix.lang d.lang less.lang paradox.lang sml.lang applescript.lang dart.lang lhs.lang pas.lang snmp.lang arc.lang diff.lang lilypond.lang pdf.lang snobol.lang arm.lang dylan.lang limbo.lang perl.lang spec.lang as400cl.lang ebnf.lang lindenscript.lang php.lang spn.lang ascend.lang eiffel.lang lisp.lang pike.lang sql.lang asp.lang erlang.lang logtalk.lang pl1.lang squirrel.lang aspect.lang euphoria.lang lotos.lang plperl.lang styl.lang assembler.lang express.lang lotus.lang plpython.lang swift.lang ats.lang fame.lang lua.lang pltcl.lang sybase.lang autohotkey.lang felix.lang luban.lang pov.lang tcl.lang autoit.lang fortran77.lang make.lang pro.lang tcsh.lang avenue.lang fortran90.lang maple.lang progress.lang tex.lang awk.lang frink.lang matlab.lang ps.lang ts.lang bat.lang fsharp.lang maya.lang ps1.lang
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值