android - TextView 的 HTML 格式化

标签 android android-layout string-formatting textview

我对 TextView 元素何时以格式化形式显示文本的“规则”感到有点困惑。

像这样的字符串

"There are <i>different ways</i> of coding.\n";

在我编码时显示没有任何格式(包括 HTML 代码)

tvMyTextView.setText("There are <i>different ways</i> of coding.\n");

但是当我在strings.xml中定义相同的字符串然后加载

tvMyTextView.setText(R.strings.TestString);

它显示强调。

当尝试在 TextView 中嵌入 URL 时,我感到更加困惑,如下所示:

"Click <a href="http://www.poon-world.com">here</a> to switch on the red light.\n";

不用说,我已经尝试了 TextView 的各种属性选项 - 但它们似乎没有太大区别,除非我错过了什么。在某些情况下,URL 在文本中编码为蓝色并且可以单击,在其他情况下我可以看到 HTML 格式。在其他情况下,它又是彩色编码的,而且 URL 似乎以某种方式在文本中进行了编码——但是当我点击它时没有任何反应。关于 URL 的嵌入,与其他具有“简单”HTML 格式的示例不同,到目前为止,我什至无法找到它何时有效以及何时无效的规则。谁能帮我解开脑中的结..

最佳答案

实际上,来自 Android 文档..

public final void setText (CharSequence text)

设置 TextView 的字符串值。 TextView 不接受类似 HTML 的格式设置,您可以在 XML 资源文件中使用文本字符串。要设置字符串样式,请将 android.text.style.* 对象附加到 SpannableString,或查看可用资源类型文档以获取在 XML 资源文件中设置格式化文本的示例。

但是,

public final void setText (int resid)
  • 没有更多关于它的规范..

但是从 Android 资源字符串文档..

您可以使用 HTML 标记为您的字符串添加样式。例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="welcome">Welcome to <b>Android</b>!</string>
</resources>

支持的 HTML 元素包括:

<b> for bold text.
<i> for italic text.
<u> for underline text.

有时您可能想要创建一个也用作格式字符串的样式化文本资源。通常,这不会起作用,因为 String.format(String, Object...) 方法将从字符串中去除所有样式信息。解决方法是使用转义实体编写 HTML 标记,然后在格式化发生后使用 fromHtml(String) 恢复这些实体。

关于您的 URL 字符串,...

tvMyTextView.setText(Html.fromHtml("Click <a href="http://www.poon-world.com">here</a> to switch on the red light.\n"));

另请参阅此 SO 问题 Set TextView text from html-formatted string resource in XML

Android String Resource

关于android - TextView 的 HTML 格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062508/

相关文章:

Android:隐藏设备的音量变化条?

android - 从数据库中检索数据并将其显示到屏幕

python - 显示带前导零的数字

python - PyCharm 和 f 弦

android - 无障碍服务和 WebView ?

android - 是否可以通过 ADB 启动一个没有动画的 Activity

android - 为什么我得到 : "preserveIconSpacing is private" error

android - 'center' 中的 'centerCrop' 和 "ImageView"有什么区别?

java - fragment 设计 : Adapting to multiple screen layouts by showing/hiding fragments within a single Activity?