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
        }
  • 相关阅读:
    Zepto源码分析-动画(fx fx_method)模块
    CSS3用法理解
    移动端网页meta设置和响应式
    javascript基础-正则表达式
    net core 2.x
    angular
    .net core 2.x
    .net core 2.x
    DDD
    DDD
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/14896958.html
Copyright © 2011-2022 走看看