支持的标签
Android
原生的 TextView
控件通过 Html.fromHtml()
方法可以加载 HTML
内容,并自动将其转换为Spannable
对象以支持富文本样式和链接等功能。在加载 HTML
内容时,TextView
支持的 HTML
标签和样式主要有以下几种:
标题标签
TextView
可以解析 HTML
中的标题标签,包括 <h1>
、<h2>
、<h3>
、<h4>
、<h5>
、<h6>
,并自动转换为对应的样式。
例如:
1 | myTextView.setText(Html.fromHtml("<h1>这是一级标题</h1><h2>这是二级标题</h2>")); |
文本格式标签
TextView
支持的文本格式标签有 <b>
(加粗)、<i>
(斜体)、<u>
(下划线)和 <strike>
(删除线)等。在加载HTML
时,这些标签会自动被转换为相应的 Spannable 对象,并应用到对应的文字上。
例如:
1 | myTextView.setText(Html.fromHtml("<b>这段文字加粗</b>,<i>这段文字斜体</i>,<u>这段文字加下划线</u>,<strike>这段文字带删除线</strike>")); |
列表标签
TextView
支持的列表标签有无序列表 <ul>
和有序列表 <ol>
,并会自动转换为相应的 Spannable
对象。
例如:
1 | myTextView.setText(Html.fromHtml("<ul><li>这是无序列表的第一项</li><li>这是无序列表的第二项</li></ul><ol><li>这是有序列表的第一项</li><li>这是有序列表的第二项</li></ol>")); |
链接标签
TextView
支持的链接标签有 <a>
,在加载 HTML
时会自动将其转换为 LinkSpan
对象,并允许用户点击跳转到对应的URL
地址。同时,在跳转时,也支持使用自定义的 Callback
回调函数进行处理。
例如:
1 | myTextView.setText(Html.fromHtml("请点击这个 <a href=\"http://www.baidu.com\">链接</a>")); |
除了默认的点击行为之外,我们还可以使用自定义的 URLSpan
和 ClickableSpan
类来处理连接的点击事件,例如弹出一个对话框或者打开一个新的 Activity 等。
示例代码如下:
1 | public class MyLinkMovementMethod extends LinkMovementMethod { |
上面的代码继承了 LinkMovementMethod
类,并重写了 onTouchEvent
方法,用于处理链接的点击事件。具体来说,当用户点击链接时,首先会判断该链接是否是一个 URLSpan
或者 ClickableSpan
对象,如果是,则调用其相应的 onClick()
方法实现自定义的行为。否则,将返回 false
继续使用默认的点击行为。
使用自定义的 MyLinkMovementMethod
可以通过以下方式设置给 TextView:
1 | myTextView.setMovementMethod(new MyLinkMovementMethod()); |
这样,就可以在用户点击链接时实现自定义的行为了。需要注意的是,实现过程中需要根据具体的需求自己进行相应的代码编写,例如在 onClick()
方法中弹出对话框或启动新的Activity
等。
除此之外还可以使用自定义的 ClickableSpan
对象来实现不同链接的事件处理:
1 | public class MyClickableSpan extends ClickableSpan { |
图片标签
TextView
支持的图片标签有 <img>
,在加载 HTML
时会自动将其转换为 ImageSpan 对象,并将图片显示在对应的位置上。
例如:
1 | myTextView.setText(Html.fromHtml("<img src=\"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png\"/>")); |
上面所列举的标签和样式只是 TextView
支持的一部分,实际上还有很多其它的标签和样式可以通过 Html.fromHtml()
方法解析并显示出来。但需要注意的是,由于安全性考虑,Android
在解析 HTML
内容时禁止加载 JavaScript、CSS 等内容,因此在使用时需要注意避免加载不安全的 HTML
内容。
支持的样式
在Android
原生TextView
中,通过 Html.fromHtml()
方法加载 HTML
标记时,是可以支持部分 CSS
样式的。下面是一些常见的 CSS
样式以及它们在 Android
原生 TextView
中的表现效果:
字体大小:
font-size
可以使用
font-size
属性来设置字体大小,例如:1
<p style="font-size: 20px;">这是一个字体大小为 20px 的段落。</p>
颜色:
color
可以使用
color
属性来设置字体颜色,例如:1
<p style="color: red;">这是一个红色的段落。</p>
字体粗细:
font-weight
可以使用
font-weight
属性来设置字体粗细,例如:1
<p style="font-weight: bold;">这是一个粗体的段落。</p>
文本对齐:
text-align
可以使用
text-align
属性来设置文本对齐方式,例如:1
<p style="text-align: center;">这是一个居中对齐的段落。</p>
背景颜色:
background-color
可以使用
background-color
属性来设置背景颜色,例如:1
<p style="background-color: yellow;">这是一个黄色背景的段落。</p>
下划线:
text-decoration
可以使用
text-decoration
属性来设置下划线,例如:1
<p style="text-decoration: underline;">这是一个带下划线的段落。</p>
需要注意的是,并不是所有的 CSS
样式都会被 Android
原生 TextView
支持。同时,在 HTML 标记中使用样式时,需要使用行内样式属性(如上面的示例代码所示),而不能使用外部样式表。如果需要添加进一步的样式,可以考虑使用 SpannableString
或自定义View
来进行实现。
本文内容来自 : ChatGPT