高亮显示文本,使用正则表达式来区分想显示的字符串
/**
* 高亮显示
* @param spannedString
* @param str 字符串
* @param pattern 匹配正则表达式
*/
public static void HightLignt(SpannableString spannedString,String str,Pattern pattern){
List<HashMap<String,String>> list=getStartAndEnd(str,pattern);
for (HashMap<String,String> map:list){
/**
* 文本高亮显示 TODO
*/
ForegroundColorSpan foregroundColorSpan=new ForegroundColorSpan(Color.BLUE);
spannedString.setSpan(foregroundColorSpan,Integer.parseInt(map.get(START)),
Integer.parseInt(map.get(END)), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
}
}
获取符合正则表达式List集合
/**
* 匹配正则表达式, 获取头跟尾
* @param str 字符串
* @param pattern 正则表达式
* @return
*/
public List<HashMap<String,String>> getStartAndEnd(String str,Pattern pattern){
List<HashMap<String,String>> list=new ArrayList<>();
Matcher matcher=pattern.matcher(str);
while (matcher.find()) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("start",matcher.start()+"");
map.put("end",matcher.end()+"");
list.add(map);
}
return list;
}
在文本中添加图片
/**
* 文本中添加图片
*//*
Drawable drawable=mContext.getResources().getDrawable(R.mipmap.main_switch);
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
ImageSpan imageSpan=new ImageSpan(drawable);
spannedString.setSpan(imageSpan,11,15,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);*/
最后提示:不管在那个文本中使用高亮,必须这样设置才有效果
SpannableString spannableString = new SpannableString(str);
textview.setText(spannableString);
网友评论