恰好碰到一个要在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); }