Как изменить цвет текста в середине предложения в Android

Мне нужно изменить цвет строки, которая появляется в предложении в случайном порядке.

Пример: эти следующие предложения - то, что мне нужно отобразить.

  1. Привет #xyz, как ты?

  2. я учусь #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));
Другие вопросы по тегам