Задний план
Предположим, я использую SpannableStringBuilder для добавления в него нескольких элементов, и один из них — это строка, которую я форматирую из файла strings.xml, внутри которого есть диапазон:
SpannableStringBuilder stringBuilder = new SpannableStringBuilder ();
stringBuilder.append(...)...
final SpannableString span = new SpannableString(...);
span.setSpan(new BackgroundColorSpan(0xff990000), ...,...,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
stringBuilder.append(getString(R.string.string_to_format, span));
stringBuilder.append(...)...
textView.setText(stringBuilder);
Эта проблема
К сожалению, форматирование такой строки удаляет сам диапазон, поэтому в моем случае не будет текста с фоновым цветом.
Это происходит в строке "getString".
Что я пробовал
Если я просто добавляю только диапазон (без «getString»), он работает нормально.
Я также пытался исследовать Html.fromHtml, но, похоже, он все равно не поддерживает цвет фона для текста.
Вопрос
Можно ли отформатировать строку, которая имеет диапазон, но все еще имеет диапазон внутри?
Точнее, входными данными является строка A из файла strings.xml, которая имеет только заполнитель (без специальных тегов HTML), и еще одна строка B, которая должна заменить заполнитель во время выполнения. Строка B должна иметь подсветку для частичного текста самой себя.
В моем случае выделенный текст — это то, что нужно искать в строке B.
Html.fromHtml()
вы все еще можете изменить диапазон, как обычный SpannableString. - person Harlan   schedule 09.07.2016