• 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
        }
  • 相关阅读:
    线程同步
    快捷键之Sublime
    快捷键之Idea
    快捷键之Chrome
    20155219付颖卓《网络对抗》逆向及Bof基础
    20155219 《嵌入式基础》
    20155219 《信息安全系统设计基础》课程总结
    20155219 《信息安全系统设计基础》第十四周学习总结
    20155219 《信息安全系统设计基础》第十三周学习总结
    2017-2018-1 20155219《信息安全系统设计基础》 实验五 通讯协议设计
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/14896958.html
Copyright © 2020-2023  润新知