概ねタイトル通りです。
TextViewにリンクを付ける方法です。
挙動としてはhtmlのリンクタグみたいな感じですね。
アプリから他のアプリを呼び出す方法としてはインテント(暗黙的Intent)などがありますが、
今回はLinkifyクラスを使った方法を紹介してみます。
使い方はとても簡単。
リンクを付けたいTextViewをLinkify.addLinks関数の引数に入れるだけです。
TextViewにメールアドレスリンクを付ける
テキストビューにメールアドレスをセットして、
第二引数をLinkify.EMAIL_ADDRESSESにします。
TextView text_mail = new TextView(this); text_mail.setText("sample@test.com"); Linkify.addLinks( text_mail, Linkify.EMAIL_ADDRESSES );
【実行結果】
TextViewに電話番号リンクを付ける
続いて電話番号。
今度は引数をLinkify.PHONE_NUMBERSにします。
TextView text_tel = new TextView(this); text_tel.setText("090-0909-0909"); Linkify.addLinks( text_tel, Linkify.PHONE_NUMBERS);
【実行結果】
TextViewにURLリンクを付ける
最後にURL引数はLinkify.WEB_URLSです。
TextView text_url = new TextView(this); text_url.setText("http://blog.oukasoft.com"); Linkify.addLinks( text_url, Linkify.WEB_URLS);
【実行結果】
今回は1つずつ引数の種類を選んで登録しましたが、
Linkify.ALL を使えば自動で判定してくれるみたいですね。
賢いなさすがAndroidかしこい。
今回の3つのケースをまとめたサンプルです。
サンプルブログラム
public class Sample20120625Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.VERTICAL); setContentView(ll); //TextViewを生成 TextView text_mail = new TextView(this); TextView text_tel = new TextView(this); TextView text_url = new TextView(this); //リンクを付けるテキストをセット text_mail.setText("Mail : sample@test.com"); text_tel.setText("電話番号 : 090-0909-0909"); text_url.setText("URL : http://blog.oukasoft.com"); //リンクに変換 Linkify.addLinks( text_mail, Linkify.EMAIL_ADDRESSES ); Linkify.addLinks( text_tel, Linkify.PHONE_NUMBERS); Linkify.addLinks( text_url, Linkify.WEB_URLS); //レイアウトにセット ll.addView(text_mail); ll.addView(text_tel); ll.addView(text_url); } }
暗黙的Intentを使うより楽チンですね。(^ω^)