TextView にクリックイベントを付ける方法。

Androidアプリを作っていると、TextView にリンクを付けたくなることもあると思います。

リンクの付け方は色々ありますが、ここではできるだけJavaのコーディングを避けて、XML中心で行う方法をご紹介します。

具体的には、XMLで下線付き青文字に設定して、onClick でイベントを設定、イベント内で暗示的インテントを送信するという方法です。

TextView リンク 下線

スポンサーリンク

最初に注意点

最初に注意点です。

この方法は TextView 自体をクリック有効にする方法なので、TextView のどこをクリックしても有効になってしまいます。特定の文字のみリンクにするということはできないので注意してください。

TextViewのテキストをリンクっぽく見せる方法

手順は以下の通りです。

  1. テキストに下線を付ける
  2. テキストを青文字にする
  3. TextViewのクリックを有効にする
  4. イベントハンドラの設定
  5. イベントのコーディング

では、やってみます。

#1. テキストに下線を付ける

TextView のテキストに下線を引くのは少々面倒です。

ただ、リソースの文字列(@string からアクセスする文字列)からならhtmlコードが利用できるので簡単に設定できます。
今回はそれを利用します。

string.xml を開いて、リンク文字列を作成します。

string.xml は app/res にあります

string.xml の位置

— 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"
/>

#2. テキストを青文字にする

色は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"
/>

#3. TextView のクリックを有効にする

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"
/>

#4. イベントを設定する

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 を通じてアクセスすることで行います。

#5. イベント内で暗示的インテントを送る

クリックイベントとして設定したメソッド(onClickURL) 内で暗示的インテントをブラウザアプリに送信します。

public void onClickURL( View v ) {
    Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "https://colorfulcompany.com/" ) );
    startActivity( intent );
}

以降の処理はブラウザアプリに託して完了です。

これでリンクっぽい見た目の TextView が作成できます。

複数個のソースを触るので面倒に感じるかもしれませんが、やっていることはかなり単純なのですぐにできると思います。

ぜひ試してみてください。

スポンサーリンク







コメントを残す