当前位置: 首页 > article >正文

高亮变色显示文本中的关键字

效果

在这里插入图片描述

第一步:按如下所示代码创建一个用来高亮显示文本的工具类:

public class KeywordUtil {
    /**
     * 单个关键字高亮变色
     * @param color   变化的色值
     * @param text    文字
     * @param keyword 文字中的关键字
     * @return
     */
    public static SpannableString highLight(int color, String text, String keyword) {
        SpannableString res = new SpannableString("\t\t\t" + text);
        Pattern pattern = Pattern.compile(keyword);
        Matcher matcher = pattern.matcher(res);
        while (matcher.find()) {
            int start = matcher.start();
            int end = matcher.end();
            res.setSpan(new ForegroundColorSpan(color), start, end, 
				Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return res;
    }
    public static SpannableString highLight(int color,String text,String... keyword) {
        SpannableString res = new SpannableString("\t\t\t" + text);
        for (String key : keyword) {
            Pattern pattern = Pattern.compile(key);
            Matcher matcher = pattern.matcher(res);
            while (matcher.find()) {
                int start = matcher.start();
                int end = matcher.end();
                res.setSpan(new ForegroundColorSpan(color), start, end, 
				Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
        return res;
    }
    public static SpannableString highLight(int[] cs,String text,String... keyword) {
        SpannableString res = new SpannableString("\t\t\t" + text);
        for (int i = 0; i < color.length; i++) {
            Pattern pattern = Pattern.compile(keyword[i]);
            Matcher matcher = pattern.matcher(res);
            while (matcher.find()) {
                int start = matcher.start();
                int end = matcher.end();
                res.setSpan(new ForegroundColorSpan(cs[i]), start, end, 
				Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
        return res;
    }
}

第二步:在主布局文件中添加三个id值分别为textView1、textView3、textView3的TextView控件,然后修改MainActivity类的代码如下所示:

public class MainActivity extends AppCompatActivity {
    private android.widget.TextView textView1;
    private android.widget.TextView textView2;
    private android.widget.TextView textView3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.textView2 = (TextView) findViewById(R.id.textView2);
        this.textView1 = (TextView) findViewById(R.id.textView1);
        this.textView3 = (TextView) findViewById(R.id.textView3);
        String text = "随着棉花糖的出现,一种新……度,探讨处理权限请求的方法";
        SpannableString spanStr1 = KeywordUtil.highLight(Color.RED, text, "权限");
        textView1.setText(spanStr1);
        SpannableString spanStr2 = KeywordUtil.highLight(
		Color.RED, text, "棉花糖","权限","安卓");
        textView2.setText(spanStr2);
        SpannableString spanStr3 = KeywordUtil.highLight(
	new int[]{Color.RED,Color.GREEN,Color.BLUE}, text, "棉花糖","权限","安卓");
        textView3.setText(spanStr3);
    }
}

http://www.kler.cn/a/401557.html

相关文章:

  • 初识进程——Linux
  • Leetcode 3355 Zero Array Transformation
  • leetcode 扫描线专题 06-leetcode.836 rectangle-overlap 力扣.836 矩形重叠
  • Ascend C算子性能优化实用技巧05——API使用优化
  • 机器学习3
  • 嘴尚绝卤味独特的口感
  • 诗韵--代码之外的生活
  • 让conda的python能够使用系统的apt安装的包
  • k8s 中传递参数给docker容器
  • 如何基于Netty手写简单的Tomcat?
  • React合成事件及其核心思想详解
  • 强化学习数学原理学习(四)
  • Ubuntu安装配置MySQL(远程登录)
  • 网络基础(4)IP协议
  • tdengine学习笔记实战-jdbc连接tdengine数据库
  • SHELL(5)字符串运算符和逻辑运算符
  • QT与嵌入式——获取网络实时时间
  • 一个交替优化问题的求解(续)
  • GNN初探
  • 2.tree of thought (使用LangChain解决N皇后问题)
  • 机器学习笔记 // 创建并训练DNN来拟合和预测序列数据
  • 运维面试题.云计算面试题之四.K8S
  • MFC线程-AfxBeginThread使用方法
  • SpringBoot常用的注解
  • 源码分析Spring Boot (v3.3.0)
  • Linux离线安装python相关包