Невозможно установить цвет нескольких текстов для просмотра текста с помощью Html.fromText в < 24

#android

#Android

Вопрос:

Я видел все вокруг stackoverflow для использования

 setText(html.fromHtml("<font color="#c5c5c5">Hello</font>"))
  

Однако ни один из них не работает для Android <23

вот пример кода:

 TextView mTextView = new TextView(context);
mTextView.setText(Html.fromHtml("<p style="color:red;">Test</p>"));
  

Это устанавливает цвет шрифта в> 23. Есть ли какие-либо альтернативы, которые работают для < 23? или это ошибка со следующей зависимостью?

 implementation 'androidx.appcompat:appcompat:1.1.0'
  

Еще немного информации: я тестирую изображение Lolipop x86

Ответ №1:

Нет необходимости в HTML, просто используйте промежутки.

 Spannable text = new SpannableString("hello");
text.setSpan(new ForegroundColorSpan(Color.RED), 0, text.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
mTextView.setText(text);
  

Если вы используете appcompat, вы, вероятно, захотите new AppCompatTextView(context) , а не просто new TextView(context) .

Комментарии:

1. Спасибо, это работает, но проблема в том, что у меня длинная строка, и я хочу установить разные цвета для разных слов неизвестного размера. есть хороший способ сделать это? с Html это сделать намного проще

2. @Android Вы можете звонить setSpan в разные регионы, setSpan(redSpan, words[0], words[1], flags); setSpan(greenSpan, words[1], words[2], flags); // etc.

Ответ №2:

используйте следующее

 setText(Html.fromHtml("<![CDATA[<font color='#c5c5c5'>Hello</font>]]>"));
  

для XML-макета не забудьте добавить

 android:textAllCaps="true"