TextViewのURLを自動的にリンクにしてくれるのは簡単だった。
<TextView
android:id="@+id/hoge"
android:autoLink="web" />
こんな感じでautoLink="web"
をつけたらリンクにしてくれた。
しかし、このままだとインストールされているブラウザで開こうとする。
これをwebviewで開く時にどうすればいいの?
というのがよくわからなかった。
いろいろググっていくと、以下のqiitaが見つかる。
TextViewに埋め込んだUrlリンクをタップした時の動作を置き換える
LinkMovementMethod
を拡張している。
このページにあるようなMutableLinkMovementMethod
を作って、
以下のようにすればリンクをクリックしたらwebviewで見れるようになった。
TextView hoge = (TextView) v.findViewById(R.id.hoge);
MutableLinkMovementMethod mutableLinkMovementMethod = new MutableLinkMovementMethod();
mutableLinkMovementMethod.setOnUrlClickListener(new MutableLinkMovementMethod.OnUrlClickListener() {
@Override
public void onUrlClick(TextView widget, Uri uri) {
Intent intent = new Intent(widget.getContext(), MyWebViewActivity.class);
intent.putExtra("WEBVIEW_URL", String.valueOf(uri));
widget.getContext().startActivity(intent);
}
});
hoge.setMovementMethod(mutableLinkMovementMethod);
※MyWebViewActivity
というWebViewを表示するためのActivityは作っておきます
もっといい感じの方法はないのかなぁと思うけどないからこういうハックをしてるのかー。
と思った今日このごろ。