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
        }
  • 相关阅读:
    Xamarin图表开发基础教程(4)OxyPlot框架
    搜索页面scroll下拉时候进行刷新,显示更多搜索值
    搜索功能
    父组件操作子组件中的值,将父组件的值设置给子组件
    扩展music-list.vue让列表前三名显示🏆奖杯
    Scroll的使用
    Vue-lazyload的使用
    获取歌曲的播放时长
    audio音乐播放
    歌曲播放页面的数据vuex管理
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/14896958.html
Copyright © 2011-2022 走看看