TextViewを押した時にselectorを使って色を変える
自分用メモ。
よくButtonなどで使われていますが、状態によって色調の違う画像を表示したりして、リアルにクリックした感じを演出したりしますよね。
xmlでselectorというタグを使用して、ボタンが押された時、フォーカスされた時などの
状態毎にリソースを定義します。
それのテキスト版です。
参考:ColorStateList stackoverflow
色の定義をするxmlファイルを作る。
ここではフォーカスされている・されていない時共通で、押されてない時は青い色、押された時はグレーにしています。
res/drawable/text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:color="@color/blue01" /> <item android:state_focused="true" android:state_pressed="true" android:color="@color/gray01" /> <item android:state_focused="false" android:state_pressed="true" android:color="@color/gray01" /> <item android:color="@color/blue01" /> </selector>
TextViewのTextColor属性に先程のxmlファイルを指定する。
<TextView android:id="@+id/textview_link" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:text="@string/text_link" android:textColor="@drawable/text_color" />
以上です。