代码之家  ›  专栏  ›  技术社区  ›  malhobayyeb

应用多重背景色

  •  1
  • malhobayyeb  · 技术社区  · 6 年前

    我想申请 ForegroundColorSpan 指定字符串中的多个单词。

    但是,只有最后应用的跨度才生效。

    我的代码是:

    private fun formatString(target: String, vararg formattableWords: String): SpannableString {
        val spannableString = SpannableString(target)
    
        val colorSpan = ForegroundColorSpan(ContextCompat.getColor(context!!, R.color.colorPrimary))
    
        formattableWords.forEach { formattableWord ->
            val start = target.indexOf(formattableWord, ignoreCase = true)
            val end = start + formattableWord.length
    
            spannableString.setSpan(colorSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
        }
    
        return spannableString
    }
    

    当我用以下代码调用它时:

    entryTermsConditionsPrivacy.text = formatString(
                "By using APP you agree to the Terms and Conditions and the Privacy Policy.",
                "APP", "Terms and Conditions", "Privacy Policy"
            )
    

    只有 Privacy Policy 接收应用的 背景色跨度

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kishore Jethava    6 年前

    ForegroundColorSpan

    private fun formatString(target: String, vararg formattableWords: String): SpannableString {
    val spannableString = SpannableString(target)
    
    //    val colorSpan = ForegroundColorSpan(ContextCompat.getColor(this, R.color.colorPrimary))
    
    formattableWords.forEach { formattableWord ->
      val start = target.indexOf(formattableWord, ignoreCase = true)
      val end = start + formattableWord.length
    
      spannableString.setSpan(ForegroundColorSpan(ContextCompat.getColor(this, R.color.colorPrimary)), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
    }
    
    return spannableString
    }