나는 이미 TextView를 사용하여 웹 주소, 전화 번호 등의 클릭 가능한 링크를 자동으로 생성하는 방법을 알고있다. 내 질문은 전화 번호뿐만 아니라 href가 포함 된 HTML도 있고 클릭 가능을 원할 때 더 좋다는 것이다. 또는 그것을하기의 표준 방법? 다음은 내가 가지고있는 것입니다.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:");
이 코드는 작동하지만 이상적이지는 않습니다. 그것이 HTML의 href를 무시하고 Linkify.WEB_URLS가 생성 된 경우에도 Html.fromHtml이 추가하는 Spannables를 제거하기 때문에 setAutoLinkMask (Linkify.PHONE_NUMBERS)를 호출하지 않습니다.
적어도 나는 전화 번호에 대해보다 견고하거나 표준 REGEX를 사용하고 싶습니다. Patterns.PHONE 같은 것이 적어도 더 나은 정규 표현식이 될 것이라고 생각합니다. 그러나, 나는 위에있는 것보다 더 우아한 해결책이 있기를 희망합니다.
이 접근법은 처음에 Spannables가 올바르게 있다고 가정합니다. 그렇지 않습니까? –
글쎄, 모든 링크는 태그로 싸여 야합니다. 전화 번호도. – Lingviston
불행히도 이미 포장 된 전화 번호로 콘텐츠를받지 못합니다. –