it-swarm.com.de

Wie kann ich Links in fromTML klickbar machen? (Android)

Das scheint ein triviales Problem zu sein, aber es hat mich irgendwie verstopft. Ich möchte eine HTML-Zeichenfolge mit Html.fromHtml () laden, und alle Links in der Zeichenfolge müssen anklickbar und im Browser geöffnet sein.

Grundbeispiel:

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

Mit diesem Snippet wird der Text so formatiert, als wäre er ein Link (blau, unterstrichen), er kann jedoch nicht angeklickt werden. Ich habe Linkify ausprobiert, scheint aber nur mit Links zu arbeiten, die nicht HTML-basiert sind.

Irgendwelche Vorschläge?

46
Gunnar Lium

Wie ich annahm, war die Lösung trivial:

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

Die zweite Zeile aktiviert irgendwie das Link-Verhalten, obwohl ich nicht ganz weiß, wie. Dieselbe Frage wird an Google Code gerichtet. 

127
Gunnar Lium

Wie bereits in anderen Antworten erwähnt, können Sie folgendermaßen vorgehen:

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

Dies funktioniert jedoch nicht, wenn Sie einen beliebigen Android: autoLink-Wert haben und nicht nur "Web", wie andere Kommentare vermuten lassen. Das bedeutet, dass Sie diese Lösung verwenden können, um URLs auf Kosten von Telefon, E-Mail und Karten zu deaktivieren, die nicht aktiviert oder deaktiviert sind.

17
Charlie Tabone

Der Javadoc des LinkMovementMethod sagt es

Unterstützt das Klicken auf Verknüpfungen mit DPad Center oder Enter.

Es macht also Sinn, dass es so funktioniert.

Und bestätigt, funktioniert mit 4.2.2 nur der Charme 

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

Es sollte so sein:

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

in XML sollte sein

<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