我已经知道如何使用 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,并且即使创建了 Linkify.WEB_URLS 也会清除 Html.fromHtml 添加的 Spannables。
至少我想为电话号码使用更强大或标准的 REGEX。我在想像Patterns.PHONE这样的东西至少会是一个更好的正则表达式。但是,我希望有一个比我上面所拥有的更优雅的解决方案。