В этом случае вы должны использовать SpannableString
.Предположим, у вас есть String
A B C D E F G
, и вам нужно установить черный фон только под B
и E
буквами.Этого можно достичь следующим образом (примеры написаны на Kotlin ):
fun highlight(text: String, words: List<String>) {
val spannable = SpannableString(text)
words.forEach {
var index = text.indexOf(it)
val length = it.length
while (index >= 0) {
highlightWord(spannable, index, length)
if (index >= 0) {
index += length
}
index = text.indexOf(it, index)
}
}
// TODO: set spannable to the TextView
}
fun highlightWord(spannable: Spannable, index: Int, length: Int) {
spannable.setSpan(BackgroundColorSpan(Color.BLACK), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}
Здесь метод highlight
ищет пропущенные слова в пропущенном тексте и выделяет каждое вхождение, используя цвет Color.BLACK
,Чтобы выделить пробелы белым цветом, вы можете сделать то же самое, передав " "
пробел String, или просто установить белый фон для всего текстового представления.