如何让Android TextView中所有类型HTML链接可点击(含mailto、tel等格式)
介绍
我最近三天都在处理这个问题,查阅了大量Stack Overflow帖子,不同Android版本、不同使用场景对应的方案各不相同,我希望通过这篇自问自答的内容彻底终结相关讨论和疑问。
问题描述
现有带链接的HTML代码,你希望使用TextView.fromHtml()方法在TextView中渲染该HTML内容,同时保留所有类型链接的可点击属性。你会遇到的问题是,存在多种不同类型的链接,TextView对它们的处理逻辑各不相同:
<a href='http://www.google.com'>A custom text</a><a href='http://www.google.com'>http://www.google.com</a><a href='mailto:test@test.com'>An email link</a><a href='mailto:test@test.com'>test@test.com</a><a href='tel:+1234567890'>A phone number link</a><a href='tel:+1234567890'>+1234567890</a>plain text http(s)://www.google.com
上述每一种链接都有对应的简单解决方案,但很难让所有类型的链接同时生效。
无效方案说明
如果你需要兼容上述所有类型的链接,无需再尝试以下技术的任意组合,它们仅适用于实现部分类型链接的可点击效果:
android:autoLink="[all|web|whatever]"Linkify.addLinks(...)TextView.setMovementMethod()
内容的提问来源于stack exchange,提问作者muetzenflo
相关产品推荐
相关产品推荐

