【问题标题】:Android Html.fromHtml(String) doesn't work for <font color='#'>text</font>Android Html.fromHtml(String) 不适用于 <font color='#'>text</font>
【发布时间】:2011-06-19 04:49:52
【问题描述】:

我正在尝试使用 html 标签向我的 TextView 添加不同颜色的线条。

不管什么原因,

    Html.fromHtml("<font color='#145A14'>text</font>");

不会在 TextView 中显示为彩色。

【问题讨论】:

  • 问题是当我做 textView.append("\n"+Html.formHtml("text"); 创建的 \n 字符新行,但是 textview 没有接收到带有颜色的形成的 html - 它使用了它的默认颜色。我不得不使用 html 换行符换行: Html.fromHtml("文本
    ");
  • 我建议您将您的评论写为答案并接受您自己的答案。这将使其他人更容易看到解决方案。

标签: android textview


【解决方案1】:
Html.fromHtml("<font color='#145A14'>text</font>");

请使用以下代替上面的

Html.fromHtml("<![CDATA[<font color='#145A14'>text</font>]]>");

这对我有用,我相信它也对你有用。

如有任何问题,请告诉我。

【讨论】:

  • @PratikButani 您可以在单独的字符串中获取字符串,最后可以从 html 设置。 ex> strtoformat = "variablename" 然后可以加载为 Html.fromHtml(strtoformat);简单:-)
  • 是的!正是需要的!非常感谢!
  • 它在 android os 4.3 上运行,但在 android os 5 及更高版本上运行。
  • @user533787 使用HtmlCompat,它将向后兼容
【解决方案2】:

我的回答涉及对您的代码的猜测,但这里是:

当您使用字体标签时:请勿包含 alpha 通道,以便您的十六进制字符串看起来像“#ff123456”。如果您使用 Integer.toHexString(),您将在该结果中拥有一个 alpha 通道。

当我在资源中的十六进制字符串上使用 substring(2) 时,它起作用了。

总结一下:

text.setText(Html.fromHtml("<font color='#123456'>text</font>"));

会起作用,但是:

text.setText(Html.fromHtml("<font color='#ff123456'>text</font>"));

不会!

【讨论】:

  • 这个很好的答案,但请注意,它也不适用于 android:textAllCaps="true"。这可能是 Android 中的某种错误。
【解决方案3】:

确保关闭任何修饰符,例如:

android:textAllCaps="true"

【讨论】:

  • 最新的appCompact默认为true,需要手动设置为false。
  • 这是什么原因?
【解决方案4】:

fromHtml 方法在它支持的 HTML 标记方面极其有限,字体不是其中之一。请参阅http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html 获取非官方列表。我自己对此进行了一些研究,发现 fromHtml 是基于一个晦涩难懂且文档记录不完善的渲染引擎。

【讨论】:

  • 该列表似乎同时包含 Html.fromHtml() 方法支持的字体标签和颜色属性?
  • +1 用于提供带有支持的标签及其属性的链接。
  • 该列表不包括 ,一些平板电脑在实践中支持...
【解决方案5】:

我用这个代码

Html.fromHtml(convertToHtml("<font color='#145A14'>text</font>"));

public String convertToHtml(String htmlString) {

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("<![CDATA[");
    stringBuilder.append(htmlString);
    stringBuilder.append("]]>");
    return stringBuilder.toString();
}

【讨论】:

    【解决方案6】:

    那看起来是很深的颜色,你确定你的屏幕能显示这种颜色,所以你能把它们和黑色区分开来吗?代码 sn-p 看起来不错,我已经多次尝试过类似的代码,它就像一个魅力。尝试使用更亮的颜色,即#ff0000(红色),以验证它是否有效:

    TextView text = ... // find or instantinate your text view.
    text.setText(Html.fromHtml("<font color='#ff0000'>text</font>"));
    

    【讨论】:

      【解决方案7】:
      textView.setText(Html.fromHtml("<font color='blue'>text</font>"));
      

      【讨论】:

        【解决方案8】:
        txt_description1.setText(Html.fromHtml("<font color='rgb'>"+str_description1+"</font>"));
        

        如果您不想要单一的静态颜色并希望直接从编辑器中反映出来,您可以使用“rgb”。它将反映您在编辑器中设置的确切颜色,只需在 textviewconcat 中设置 textview 值。 一切准备就绪。

        【讨论】:

          【解决方案9】:

          确保您的 RGB 值是大写的。 Android 可以理解#00FF00 但不能理解#00ff00。

          【讨论】:

            【解决方案10】:

            试试这个,它应该可以工作

             textView.setText(Html.fromHtml("<font color=\"#145A14\">text</font>"));
            

            【讨论】:

            • 第一件事:我认为我的答案和其他人一样,所以你对我的答案投了反对票。第二件事:注意我使用了 \"#145A14\" 而不是 '# 145A14' .
            【解决方案11】:

            是的,我同意,它有时不起作用。

            作为替代方案,我在 xml 中使用 Textview:

            android:textColorLink="yourColor"
            

            像魅力一样工作;)

            【讨论】:

            • 如果 Spanable 以某种方式转换为字符串,我需要花费一个小时才能弄明白,这将无法正常工作。使用 textView.setText(Html.fromHtml("text"));然后在 fromHTML 括号中附加和前置任何其他字符串。
            【解决方案12】:

            对于带有超链接 URL 的彩色文本:

            textView.setText(Html.fromHtml("You agree to our <font color='#F20000'><a href='https://www.yoururl.com'> Terms of Service</a></font> and <font color='#F20000'><a href='https://www.yoururl.com'>Privacy Policy</a></font>", Html.FROM_HTML_MODE_LEGACY), TextView.BufferType.SPANNABLE);
            

            这对我有用,我相信它也适用于所有人。

            【讨论】:

              猜你喜欢
              • 2022-07-28
              • 2014-03-17
              • 1970-01-01
              • 1970-01-01
              • 2020-09-20
              • 2022-12-21
              • 2011-04-15
              • 2012-08-09
              相关资源
              最近更新 更多