Как изменить цвет текста в середине предложения в Android
Мне нужно изменить цвет строки, которая появляется в предложении в случайном порядке.
Пример: эти следующие предложения - то, что мне нужно отобразить.
Привет #xyz, как ты?
я учусь #abc android.
В этом я должен изменить цвет слов " #xyz ", " #abc ", т. Е. Который начинается с символа " # ".
Я использовал некоторые строковые функции split(), subString(). но я не получаю то, что мне нужно.
так что, пожалуйста, объясните мне, как это решить.
3 ответа
Решение
Используйте SpannableString для ex:
SpannableString ss = new SpannableString("hai #xyz how are you.");
ss.setSpan(new ForegroundColorSpan(Color.RED), 4, 9, 0);
Попробуйте изменить цвет каждого слова с помощью #:
String s="hai #xyz how are you.";
ForegroundColorSpan span = new ForegroundColorSpan(Color.RED);
SpannableString ss = new SpannableString(s);
String[] ss = s.split(" ");
int currIndex = 0;
for (String word : ss) {
if (word.startsWith("#")) {
ss.setSpan(span, currIndex,currIndex+ word.length(), 0);
}
currIndex += (word.length() + 1);
}
Вы можете легко добиться этого, используя HTML-теги
tv_message.setText(Html.fromHtml("<font color=\"#000000\">"+"Hi "+"</font>"+" "+"<font color=\"#EE0000\">"+"XYZ "+"</font>"+" "+"<font color=\"#000000\">"+"How are You ? " + "</font>"));
Вы можете использовать этот код:
t.setText(first + next, BufferType.SPANNABLE);
Spannable s = (Spannable)t.getText();
int start = first.length();
int end = start + next.length();
s.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
или вы можете использовать HTML:
String first = "This word is ";
String next = "<font color='#EE0000'>red</font>";
t.setText(Html.fromHtml(first + next));