Я уже знаю, как использовать TextView для автоматического создания интерактивных ссылок для веб-адресов, телефонных номеров и т. Д. Мой вопрос в том, когда у вас есть HTML-код с hrefs, а также номера телефонов, и вы хотите, или более стандартный способ сделать это? Вот что у меня есть:Есть ли стандартный способ иметь hrefs и номера телефонов, которые можно щелкнуть в TextView?
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), потому что он будет игнорировать href в HTML, и он уничтожит Spannables, который Html.fromHtml добавит даже при создании Linkify.WEB_URLS.
По крайней мере, я хотел бы использовать более надежный или стандартный REGEX для телефонных номеров. Я думаю, что что-то вроде Patterns.PHONE, по крайней мере, будет лучшим регулярным выражением. Тем не менее, я надеюсь, что есть более элегантное решение, которое у меня было выше.
Этот подход предполагает, что Spannables находятся там правильно, в первую очередь, не так ли? –
Ну все ссылки должны быть обернуты тегом . Я полагаю. Телефонные номера также. – Lingviston
К сожалению, я не получу контент с уже завернутыми телефонными номерами. –