Androidアプリを作っていると、TextView にリンクを付けたくなることもあると思います。
リンクの付け方は色々ありますが、ここではできるだけJavaのコーディングを避けて、XML中心で行う方法をご紹介します。
具体的には、XMLで下線付き青文字に設定して、onClick でイベントを設定、イベント内で暗示的インテントを送信するという方法です。
Androidアプリを作っていると、TextView にリンクを付けたくなることもあると思います。
リンクの付け方は色々ありますが、ここではできるだけJavaのコーディングを避けて、XML中心で行う方法をご紹介します。
具体的には、XMLで下線付き青文字に設定して、onClick でイベントを設定、イベント内で暗示的インテントを送信するという方法です。
スポンサーリンク
最初に注意点です。
この方法は TextView 自体をクリック有効にする方法なので、TextView のどこをクリックしても有効になってしまいます。特定の文字のみリンクにするということはできないので注意してください。
手順は以下の通りです。
では、やってみます。
TextView のテキストに下線を引くのは少々面倒です。
ただ、リソースの文字列(@string からアクセスする文字列)からならhtmlコードが利用できるので簡単に設定できます。
今回はそれを利用します。
string.xml を開いて、リンク文字列を作成します。
string.xml は app/res にあります
— string.xml —
<string name="link"><u>リンク文字列</u></string>
TextView の文字列の設定をします。
リソースから参照する形で設定します。
— activity_main.xml —
<TextView android:id="@+id/textView_web" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/link" android:textColor="#0000ff" android:focusable="true" android:focusableInTouchMode="true" android:clickable="true" android:onClick="onClickURL" />
色はXMLで簡単に変更できます。
android:textColor で変更可能です。
青文字なので、色は#0000ffにします。
<TextView android:id="@+id/textView_web" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/link" android:textColor="#0000ff" android:focusable="true" android:focusableInTouchMode="true" android:clickable="true" android:onClick="onClickURL" />
TextView のクリックを有効にするには、XMLでもJava のソースからでも設定ができます。
今回はXMLで設定します。
<TextView android:id="@+id/textView_web" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/link" android:textColor="#0000ff" android:focusable="true" android:focusableInTouchMode="true" android:clickable="true" android:onClick="onClickURL" />
clickable が true になると onClick が有効になります。
android:onClick にメソッド名を設定します。
<TextView android:id="@+id/textView_web" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/link" android:textColor="#0000ff" android:focusable="true" android:focusableInTouchMode="true" android:clickable="true" android:onClick="onClickURL" />
メソッドの名前は何でも構いません。
設定した名前のメソッドをmainActivityに作成します。
public void onClickURL( View v ) { }
引数は View のオブジェクトです。
これはクリックされたビューの実態、今回だと TextView が入ってきます。
クリックでTextViewを編集したい場合は、この引数の v を通じてアクセスすることで行います。
クリックイベントとして設定したメソッド(onClickURL) 内で暗示的インテントをブラウザアプリに送信します。
public void onClickURL( View v ) { Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "https://colorfulcompany.com/" ) ); startActivity( intent ); }
以降の処理はブラウザアプリに託して完了です。
これでリンクっぽい見た目の TextView が作成できます。
複数個のソースを触るので面倒に感じるかもしれませんが、やっていることはかなり単純なのですぐにできると思います。
ぜひ試してみてください。
スポンサーリンク