Html.fromHtml 如何兼容span标签
时间: 2023-12-12 12:05:44 浏览: 28
`Html.fromHtml` 方法在 Android 7.0 (API level 24) 及以上版本中已经被废弃,推荐使用 `HtmlCompat.fromHtml` 方法替代。`HtmlCompat.fromHtml` 方法可以兼容 span 标签,你可以在 HTML 字符串中使用 span 标签来设置字体颜色、字体大小等样式。下面是一个示例:
```kotlin
val htmlString = "<b>Hello</b> <span style=\"color:red;\">world!</span>"
val spanned = HtmlCompat.fromHtml(htmlString, HtmlCompat.FROM_HTML_MODE_LEGACY)
textView.text = spanned
```
在上面的代码片段中,我们定义了一个包含粗体文本和红色字体的 span 的 HTML 字符串,并且使用 `HtmlCompat.fromHtml` 方法将其转换为 `Spanned` 对象,最后将其设置到 `TextView` 中显示。
需要注意的是,`HtmlCompat.fromHtml` 方法的第二个参数 `HtmlCompat.FROM_HTML_MODE_LEGACY` 表示使用最新的 HTML 解析器。如果你需要兼容较早版本的 Android 系统,可以使用 `HtmlCompat.FROM_HTML_MODE_COMPACT` 参数,这个参数可以兼容 Android 4.4 及以上版本。
相关问题
android Html.fromHtml颜色不起作用的原因
可能是因为你在使用 Html.fromHtml() 方法时,没有正确地设置 SpannableString 中的颜色。可以尝试以下方法:
1. 使用 Html.fromHtml() 方法将 HTML 字符串转换为 SpannableString 对象。
2. 在 SpannableString 对象中找到需要设置颜色的部分,使用 ForegroundColorSpan 设置颜色。例如:
```java
SpannableString spannableString = new SpannableString(htmlString);
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED);
spannableString.setSpan(colorSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
```
其中,startIndex 和 endIndex 分别表示需要设置颜色的文本的起始和结束位置。
3. 将 SpannableString 对象设置给 TextView 或其他支持 Spannable 的组件。
```java
textView.setText(spannableString);
```
注意:如果你使用的 HTML 中包含了自定义的标签或属性,需要自定义一个解析器来解析它们。可以参考 Android 官方文档中的 Html.fromHtml() 方法的源代码,自定义解析器并使用 Html.fromHtml() 方法的另一种重载方法来解析 HTML。
获取html中所有 span 标签中的内容
要获取 HTML 中所有 `<span>` 标签中的内容,可以使用 Python 中的 Beautiful Soup 库。以下是一个示例代码片段:
```python
from bs4 import BeautifulSoup
# 假设 HTML 代码保存在变量 html 中
html = '<div><span>foo</span><span>bar</span></div>'
# 创建 BeautifulSoup 对象
soup = BeautifulSoup(html, 'html.parser')
# 找到所有的 span 标签
spans = soup.find_all('span')
# 遍历每个 span 标签,并打印其文本内容
for span in spans:
print(span.text)
```
输出将是:
```
foo
bar
```
在这个示例中,首先我们将 HTML 代码保存在一个变量中。然后,我们使用 BeautifulSoup 库将这个字符串解析成一个 BeautifulSoup 对象。接下来,我们使用 `find_all` 方法找到所有的 `<span>` 标签,并将结果存储在一个列表中。最后,我们遍历列表中的每个标签,使用 `text` 属性获取其文本内容并将其打印出来。