【发布时间】:2015-01-27 21:40:03
【问题描述】:
我已经知道如何使用 TextView 自动为网址、电话号码等创建可点击的链接。我的问题是,当您的 HTML 中包含 href 以及电话号码并且您希望两者都可点击时,是否有更好或更标准的方法?这是我所拥有的:
String text = "Click <a href=\"http://stackoverflow.com\">Stackoverflow</a> or call 1-234-567-8901.";
TextView textView = getTextView();
textView.setLinksClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(Html.fromHtml(text));
// This is a pretty primitive US-centric phone number REGEX but it works
Linkify.addLinks(textView, Pattern.compile("(1?[-. ])?\\d\\d\\d([-. ])\\d\\d\\d\\2\\d\\d\\d\\d"), "tel:");
此代码有效,但似乎并不理想。我不调用 setAutoLinkMask(Linkify.PHONE_NUMBERS) 因为它会忽略 HTML 中的 href 并且它会清除 Html.fromHtml 添加的 Spannables,即使创建了 Linkify.WEB_URLS。
至少我想为电话号码使用更强大或标准的 REGEX。我在想像Patterns.PHONE 这样的东西至少会是一个更好的正则表达式。但是,我希望有一个比我上面的更优雅的解决方案。
【问题讨论】:
标签: android textview linkify linkmovementmethod