在Android中使用Html.fromHtml设置颜色到TextView不起作用

时间:2016-12-19 08:45:05

标签: android html textview

我正在开发一款Android应用。在我的应用中,我尝试在TextView中为文本设置不同的颜色。我是指TextView中的多种颜色。我正在尝试使用Html.fromHtml来执行此操作。但它没有用。请参阅下面的代码:

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设置字体颜色。但它没有用。 &#34;阅读更多&#34;附加的文本始终与其他字母颜色相同。所以我也尝试过这种方式。

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

它不起作用。这也是:

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

那么如何在TextView中为文本设置多种颜色呢?为什么我的代码不起作用?我该如何解决?

5 个答案:

答案 0 :(得分:3)

试试这个

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

答案 1 :(得分:1)

尝试使用它:

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

答案 2 :(得分: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);

答案 3 :(得分: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);

答案 4 :(得分:0)

我已经在我的应用程序中检查了代码的工作情况。

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

请仔细检查您的代码可能是您的标题为空。