web-dev-qa-db-fra.com

Comment puis-je rendre cliquable des liens fromHTML? (Android)

Cela semble être un problème trivial, mais cela m’est quelque peu embarrassé. Je veux charger une chaîne HTML à l'aide de Html.fromHtml () et que tous les liens de la chaîne soient cliquables et ouverts dans le navigateur.

Exemple de base:

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

Avec cet extrait, le texte est mis en forme comme s'il s'agissait d'un lien (bleu, souligné), mais il n'est pas cliquable. J'ai essayé Linkify, mais cela ne semble fonctionner qu'avec des liens qui ne sont pas basés sur HTML.

Aucune suggestion?

46
Gunnar Lium

Comme je le supposais, la solution était triviale:

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

La deuxième ligne active le comportement du lien, bien que je ne sois pas tout à fait sûr de savoir comment. La même question est abordée à Google Code

127
Gunnar Lium

Comme mentionné dans d'autres réponses, une solution consiste à utiliser:

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

Cependant, cela ne fonctionnera pas si vous avez AUCUN Android: valeur autoLink définie, pas seulement "web" comme le suggèrent d'autres commentaires. Cela signifie donc que vous pouvez utiliser cette solution pour lier des URL au détriment de la désactivation/de la désactivation du téléphone, du courrier électronique et des cartes.

17
Charlie Tabone

Le javadoc du LinkMovementMethod dit qu'il

Prend en charge les liens avec DPad Center ou Enter.

Il est donc logique que cela fonctionne de cette façon.

Et confirmé, avec 4.2.2 fonctionne comme un charme avec juste le 

textView.setMovementMethod(LinkMovementMethod.getInstance());
5
Caye

Cela devrait être comme ça:

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

en XML devrait être

<TextView
    Android:id="@+id/txtview"
    Android:autoLink="web"
    Android:linksClickable="true"
    />
3
Umakant Patil
String data="MyTest";

textView.setText(data);
textView.setText(Html.fromHtml(data));
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setLinksClickable(true);
0
M.Ganji