Как я могу сделать ссылки из HTML кликабельными? (Android)
Это похоже на тривиальную проблему, но у меня есть что-то вроде тупого. Я хочу загрузить HTML-строку с помощью Html.fromHtml() и иметь любые ссылки в строке, которые можно щелкнуть и открыть в браузере.
Основной пример:
textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
С помощью этого фрагмента текст отформатирован так, как если бы это была ссылка (синяя, подчеркнутая), но она не была нажата. Я попробовал Linkify, но он работает только со ссылками, которые не основаны на HTML.
Любые предложения?
Ответы
Ответ 1
Как я полагал, решение было тривиальным:
textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());
Вторая строка каким-то образом активирует поведение ссылки, хотя я не совсем уверен, как это сделать. Тот же вопрос рассматривается в Код Google.
Ответ 2
Как упоминалось в других ответах, путь вперед должен использоваться:
xtView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());
Однако это не сработает, если у вас есть ANY android: значение autoLink установлено, а не просто "веб", как показывают другие комментарии. Таким образом, это означает, что вы можете использовать это решение для связывания URL-адресов за счет того, что телефон, электронная почта и карты отключены/отсоединены.
Ответ 3
В javadoc метода LinkMovementMethod сказано, что он
Поддерживает клики по ссылкам с помощью DPad Center или Enter.
Таким образом, имеет смысл, что это работает.
И подтвердил, что 4.2.2 работает как шарм только с
textView.setMovementMethod(LinkMovementMethod.getInstance());
Ответ 4
Это должно быть так:
textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setAutoLinkMask(Linkify.WEB_URLS);
textView.setLinksClickable(true);
в XML должно быть
<TextView
android:id="@+id/txtview"
android:autoLink="web"
android:linksClickable="true"
/>
Ответ 5
String data="MyTest";
textView.setText(data);
textView.setText(Html.fromHtml(data));
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setLinksClickable(true);