これは些細な問題のように思えますが、私は困惑しています。 Html.fromHtml()を使用してHTML文字列をロードし、文字列内のリンクをクリックしてブラウザで開くようにします。
基本的な例:
textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
このスニペットを使用すると、テキストはリンク(青、下線付き)のようにフォーマットされますが、クリックできません。 Linkifyを試しましたが、HTMLベースではないリンクでのみ機能するようです。
助言がありますか?
私が推測したように、解決策は簡単でした:
textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());
2行目はリンクの動作を何らかの形でアクティブにしますが、どのように動作するのかはよくわかりません。同じ質問が Google Code で扱われています。
他の回答で述べたように、次の方法を使用することです:
xtView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
textView.setMovementMethod(LinkMovementMethod.getInstance());
ただし、他のコメントが示唆するように「web」だけでなく、任意のAndroid:autoLink値が設定されている場合、これは機能しません。つまり、このソリューションを使用して、電話、電子メール、およびマップを無効化/リンク解除する代わりに、URLをリンクできます。
LinkMovementMethodのjavadocでは、
DPad CenterまたはEnterを使用したリンクのクリックをサポートします。
したがって、そのように機能することは理にかなっています。
そして確認されたように、4.2.2では、
textView.setMovementMethod(LinkMovementMethod.getInstance());
次のようになります。
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"
/>
String data="MyTest";
textView.setText(data);
textView.setText(Html.fromHtml(data));
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setLinksClickable(true);