Добавьте сразу несколько стилей в 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));