2016-12-19 2 views
0

Я разрабатываю приложение для Android. В моем приложении я пытаюсь установить разные цвета для текста в TextView. Я имею в виду несколько цветов в TextView. Я пытаюсь использовать Html.fromHtml, чтобы сделать это. Но это не работает. Пожалуйста, смотрите мой код ниже:Настройка цвета с использованием Html.fromHtml в TextView в Android не работает

TextView XML:

<TextView 
    android:paddingTop="@dimen/general_line_spacing" 
    android:paddingBottom="@dimen/general_line_spacing" 
    android:textSize="@dimen/mm_item_title_size" 
    android:textColor="@color/colorPrimaryText" 
    android:id="@+id/mm_item_tv_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Это, как я установил текст TextView

String title = post.getTitle(); 
if(title!=null && title.length()>MAX_TITLE_LENGTH) 
{ 
    title = title.substring(0, MAX_TITLE_LENGTH); 
    title = title + "<font color='color:#2bb1ff'> .... read more</font>"; 
} 
viewHolder.tvTitle.setText(Html.fromHtml(title)); 

Как вы можете видеть, я устанавливаю цвет шрифта с помощью HTML. Но это не работает. Добавленный текст «читать больше» всегда имеет один и тот же цвет с другими буквами. Поэтому я тоже пробовал это.

title = title + "<![CDATA[<font color='color:#2bb1ff'> .... read more</font>]]>"; 

Не работает. Это также:

title = title + "<span style=color:'#2bb1ff'> .... read more</span>"; 

Так как я могу установить несколько цветов к тексту в TextView пожалуйста? Почему мой код не работает? Как я могу это исправить?

+0

Вы пытались экранировать символы при использовании кавычек для цветового кода HTML? Похоже на: JamesSwinton

ответ

1

Попробуйте

title = title + "<font color=#2bb1ff> .... read more</font>"; 
+0

Да. Этот работает. Огромное спасибо. –

0

Попробуйте использовать его так:

title = title + "<span style='color: #2bb1ff;'> .... read more</span>";

+0

Я пробовал, не работал. –

1

Используйте Spannable так:

SpannableStringBuilder builder = new SpannableStringBuilder(); 
    SpannableString str1 = new SpannableString(titleText); 
    builder.append(str1); 
    SpannableString str2 = new SpannableString("....read more"); 
    str2.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getActivity(), R.color.colorGrey)), 0, str2.length(), 0); 
    builder.append(str2); 
    viewHolder.tvTitle.setText(builder); 
+0

Я пробовал это. Не работает. ".... читать дальше" не добавляется событие. –

+0

Поделитесь своим кодом .. – Meenal

0
Hope this will help you: 
title = title + "![CDATA[<font color=#2bb1ff> .... read more</font>]]" 

Примечание: Пожалуйста, не используйте статический текст в коде. попробуйте использовать его в файле string.xml, затем получите его оттуда. Пример:

<string name="read_more"><![CDATA[<font color=#2bb1ff> .... read more</font>]]></string> 
title = title + activity.getResources().getString(R.string.read_more); 
+0

Ваш ответ не ясен. Что ты предлагаешь? – zombie

0

Я проверил в моем приложении, что это код работает.

title = title + "<font color='#000'> .... read more</font>"; 
txt_view.setText(Html.fromHtml(title)); 

Проверьте, пожалуйста, в вашем коде может быть ваш заголовок пустым.

+0

'fromHtml (String)' устарел –

Смежные вопросы