Android中TextView的某一关键字高亮显示

恰好碰到一个要在ListView的Item中显示搜索的关键字高亮显示。已经解决,如今讲代码贴出来。 java

调用的时候传入2个参数便可,1.要显示的文本。2.须要高亮的关键字。 android

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

import android.graphics.Color;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.CharacterStyle;
import android.text.style.ForegroundColorSpan;

public class TextUtilTools {

	/**
	 * 关键字高亮显示
	 * 
	 * @param target  须要高亮的关键字
	 * @param text	     须要显示的文字
	 * @return spannable 处理完后的结果,记得不要toString(),不然没有效果
	 */
	public static SpannableStringBuilder highlight(String text, String target) {
		SpannableStringBuilder spannable = new SpannableStringBuilder(text);
		CharacterStyle span = null;

		Pattern p = Pattern.compile(target);
		Matcher m = p.matcher(text);
		while (m.find()) {
			span = new ForegroundColorSpan(Color.RED);// 须要重复!
			spannable.setSpan(span, m.start(), m.end(),
					Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
		}
		return spannable;
	}
	
	// 调用
	// SpannableStringBuilder textString = TextUtilTools.highlight(item.getItemName(), KnowledgeActivity.searchKey);
	// vHolder.tv_itemName_search.setText(textString);
}
相关文章
相关标签/搜索