之前在『Android 改变 TextView 内局部样式』中介绍过利用 HTML 标签来设置样式,使用时你可能会遇到超文本跳转的需求,很容易你就能想到给 HTML 字符串添加 <a>
标签:
TextView
确实出现了超文本的显示效果,但是却不能够响应点击。

我们还需要对其做进一步处理。这里同样用到了『Android 改变 TextView 内局部样式』中介绍的另一种方式,也就是 SpannableString
,代码如下:
通过 Spanned.getSpans()
方法提取到可点击的 URLSpan
,并重新构造 URLSpan
再添加到 SpannableString
中即可。URLSpan
是 ClickableSpan
的实现,当点击其中设置了 Span 的文本时,URLSpan
将尝试通过启动带有 Intent.ACTION_VIEW
的 Activity
来打开 URL。
上面代码的效果就是跳转到浏览器打开超链接。

除了我们常见的网页超链接外,超文本其实还包含其他场景的应用,而上面说到 URLSpan
尝试通过启动带有 Intent.ACTION_VIEW
的 Activity
来打开 URL,这让我们很容易就想起之前介绍过的发送邮件。可以这么写:
它也会直接拉起手机的邮件应用:

如果希望接管点击后的逻辑,我们可以自行实现 ClickableSpan
:
我们构造一个 HypertextSpan
来接管点击逻辑,只需将上一步的 URLSpan
替换即可,构造方法中传入 Context
和 URL 可以方便我们处理判断及跳转。
比如在应用内打开网页:

Gitalking ...