Intereting Posts
Функция запуска триггера при нажатии кнопки на Android Как программно удалить существующее правило, которое было определено в XML? Mock HttpResponse с Robolectric Событие Onclick в текстовом режиме (с TextIsSelectable = "true") ony вызывало второй щелчок Как сделать TextView похожим на PreferenceCategory Header Bintray: невозможно загрузить файлы: группа Maven, артефакт или версия, определенные в файле pom, не совпадают Как установить прозрачность фонового изображения Android xml-файл Использование видеопотока как открытая текстура GL ES 2.0 Ошибка: не удается подключить пустой файл в приложении GMAIL с помощью поставщика файлов Сборщик мусора в Android Использование GoogleApiClient + LocationServices не обновляется Как отобразить таблицу лидеров с сервисами игровых игр Google? Я пытаюсь протестировать андроид ссылки с глубоким URL-адресом через adb, чтобы запустить приложение Jelly Bean DatePickerDialog – есть способ отменить? Отправить HTML-письмо с помощью намерения Android

Добавьте сразу несколько стилей в SpannableString

В настоящее время я устанавливаю цвета текста и фона для части строки, используя SpannableString следующим образом:

SpannableStringBuilder spanString = new SpannableStringBuilder(text); spanString.setSpan( new ForegroundColorSpan(Color.RED), start, end, 0 ); spanString.setSpan( new BackgroundColorSpan(Color.GRAY), start, end, 0 ); 

Есть ли способ объединить оба эти стили в один объект CharacterStyle и установить его в текст в одной команде?

Solutions Collecting From Web of "Добавьте сразу несколько стилей в SpannableString"

Если вы в конечном итоге хотите установить текст TextView (или что-то подобное), вы можете использовать SpannableString для форматирования каждой строки отдельно и использовать TextUtils.concat для их исправления, что устраняет необходимость в SpannableStringBuilder .

Код ниже устанавливает текст в TextView в «Hello World», где «Hello» красный, а «World» – зеленый.

 TextView myTextView = new TextView(this); SpannableString myStr1 = new SpannableString("Hello"); SpannableString myStr2 = new SpannableString("World"); myStr1.setSpan( new ForegroundColorSpan(Color.RED), 0, myStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ); myStr2.setSpan( new ForegroundColorSpan(Color.GREEN), 0, myStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ); myTextView.setText(TextUtils.concat(myStr1, " ", myStr2));