web-dev-qa-db-ja.com

fromHTMLのリンクをクリック可能にするにはどうすればよいですか? (アンドロイド)

これは些細な問題のように思えますが、私は困惑しています。 Html.fromHtml()を使用してHTML文字列をロードし、文字列内のリンクをクリックしてブラウザで開くようにします。

基本的な例:

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

このスニペットを使用すると、テキストはリンク(青、下線付き)のようにフォーマットされますが、クリックできません。 Linkifyを試しましたが、HTMLベースではないリンクでのみ機能するようです。

助言がありますか?

47
Gunnar Lium

私が推測したように、解決策は簡単でした:

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

2行目はリンクの動作を何らかの形でアクティブにしますが、どのように動作するのかはよくわかりません。同じ質問が Google Code で扱われています。

134
Gunnar Lium

他の回答で述べたように、次の方法を使用することです:

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

ただし、他のコメントが示唆するように「web」だけでなく、任意のAndroid:autoLink値が設定されている場合、これは機能しません。つまり、このソリューションを使用して、電話、電子メール、およびマップを無効化/リンク解除する代わりに、URLをリンクできます。

20
Charlie Tabone

LinkMovementMethodのjavadocでは、

DPad CenterまたはEnterを使用したリンクのクリックをサポートします。

したがって、そのように機能することは理にかなっています。

そして確認されたように、4.2.2では、

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

次のようになります。

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"
    />
3
Umakant Patil
String data="MyTest";

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