Применение нескольких ForegroundColorSpan - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу применить 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 получает приложенный ForegroundColorSpan

1 Ответ

0 голосов
/ 09 февраля 2019

Каждый раз, когда вам понадобится новый объект 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...