Установить черный цвет фона только для символов и белый цвет между двумя символами 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, или просто установите белый фон для всего текста.

Другие вопросы по тегам