Я считаю, что есть более легкий, красивый способ идти о достижении этой цели: просто создать backgroundColorSpan и добавить его в SpannableString , Что-то вдоль этих линий:
public static SpannableString buildBackgroundColorSpan(SpannableString spannableString,
String text, String searchString, int color) {
int indexOf = text.toUpperCase().indexOf(searchString.toUpperCase());
try {
spannableString.setSpan(new BackgroundColorSpan(color), indexOf,
(indexOf + searchString.length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} catch (Exception e) {
}
return spannableString;
}
Где «spannableString» является объектом SpannableString создан и предполагается инициализируется с «текст»; «searchString» представляет фрагмент текста, который вы хотите «выделить» в вашем TextView, и «цвет» цвета фона, на который должен быть установлен «выделенный» текст.
String text = "The Quick Brown Fox Jumps over the Lazy Dog";
String searchString = "brown";
int color = Color.parseColor("#FFF5F19E");
SpannableString spannableString = new SpannableString(text);
spannableString = StringUtils.buildBackgroundColorSpan(spannableString, text, searchString, color);
Я думаю, этого должно быть достаточно.
Благодаря
Привет, Оле, вы решили этот вопрос? Мне также нужно было бы такое же поведение – alfdev
Возможный дубликат [TextView с цветом фона и межстрочным интервалом] (https://stackoverflow.com/questions/22939862/textview-with-background-color-and-line-spacing) –