一、完全匹配指定字符串并改变指定字符串在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 }