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);
}
相關文章
相關標籤/搜索