Установить черный цвет фона только для символов и белый цвет между двумя символами TextView
Как установить цвет фона черный только для символов и белый цвет фона между символами только в одной студии TextView android Пример в изображении
Как и на рисунке показано, что А имеет черный цвет фона, а пространство между А и В имеет белый цвет фона. Как можно этого добиться?
1 ответ
В этом случае вы должны использовать 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, или просто установите белый фон для всего текста.