public class TextRichUtil {
public interface RichClickLisentner {
void onClick();
}
/**
* 获取高亮字符串
* @param content 内容
* @param target 高亮的部分
* @param color 高亮的颜色
*/
public static SpannableStringBuilder getRichText(String content, String target, int color){
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(content);
Matcher matcher = Pattern.compile(target).matcher(content);
while (matcher.find()){
int start = matcher.start();
int end = matcher.end();
stringBuilder.setSpan(new ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return stringBuilder;
}
/**
* 设置高亮字符串
* @param textView 控件
* @param content 内容
* @param target 高亮的部分
* @param color 高亮的颜色
* @param lisenter 高亮部分点击事件
*/
public static void setRichText(TextView textView, String content, String target, int color, RichClickLisentner lisenter){
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(content);
Matcher matcher = Pattern.compile(target).matcher(content);
while (matcher.find()){
int start = matcher.start();
int end = matcher.end();
stringBuilder.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View view) {
lisenter.onClick();
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setColor(color);
}
}, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setText(stringBuilder);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
}
Android匹配字符串高亮并设置点击事件
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。