Подтвердить что ты не робот

Как я могу сделать ссылки из HTML кликабельными? (Android)

Это похоже на тривиальную проблему, но у меня есть что-то вроде тупого. Я хочу загрузить HTML-строку с помощью Html.fromHtml() и иметь любые ссылки в строке, которые можно щелкнуть и открыть в браузере.

Основной пример:

textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));

С помощью этого фрагмента текст отформатирован так, как если бы это была ссылка (синяя, подчеркнутая), но она не была нажата. Я попробовал Linkify, но он работает только со ссылками, которые не основаны на HTML.

Любые предложения?

4b9b3361

Ответ 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);