zoukankan      html  css  js  c++  java
  • Android的TextView匹配子串并改变子串的字体颜色(所有存在的子串)

    一、完全匹配指定字符串并改变指定字符串在TextView中的颜色

     /**
         * @description 改变TextView的部分字体颜色
         * @date: 2021/6/17 9:44
         * @param view 要改变字体颜色的TextView
         * @param textColor 字体颜色
         * @param allString 整串字符串
         * @param partString 要改变颜色的部分字符串
         */
        fun showPartTextColor(
            view: TextView,
            textColor: Int,
            allString: String,
            partString: String
        ) {
            val spannableStringBuilder = SpannableStringBuilder(allString)
            for (index in allString.indices) {
                var start = allString.indexOf(partString, index)
                var end = start + partString.length
                if (start != -1) {
                    spannableStringBuilder.setSpan(
                        ForegroundColorSpan(textColor),
                        start,
                        end,
                        Spannable.SPAN_EXCLUSIVE_INCLUSIVE
                    )
                }
            }
    
            view.text = spannableStringBuilder
        }

    二、匹配第一个子串,并根据子串的数量设置不同子串的不同字体颜色

    /**
         * @description
         * @date: 2021/6/17 10:44
         * @param view 要设置的TextView
         * @param textColors 颜色列表
         * @param allString 全字符串
         * @param partStrings 要变颜色的字符串列表
         * @return
         */
        fun showPartTextColors(
            view: TextView,
            textColors: Array<Int>,
            allString: String,
            partStrings: Array<String>
        ) {
            val spannableStringBuilder = SpannableStringBuilder(allString)
            var len = textColors.size
            for (index in 0 until len) {
                var partStr = partStrings[index]
                var start = allString.indexOf(partStr)
                var end = start + partStr.length
                if (start != -1) {
                    spannableStringBuilder.setSpan(
                        ForegroundColorSpan(textColors[index]),
                        start,
                        end,
                        Spannable.SPAN_EXCLUSIVE_INCLUSIVE
                    )
                }
            }
            view.text = spannableStringBuilder
        }
  • 相关阅读:
    游戏资源贴
    赠云风大侠
    微软ad域的初步认识
    WAMP 80端口被MicrosoftHTTPAPI/2.0占用的解决办法
    单点登录的一系列尝试及最终解决
    母版页缓存问题
    Vs2012如何创建数据库
    Request.QueryString 不能像使用方法那样使用不可调用
    将textbox中的光标移动到当前输入的文本后
    用户控件学习笔记
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/14896958.html
Copyright © 2011-2022 走看看