AndroidのButtonのSelector

ButtonのSelectorは結構いろいろな部分まで手が届く、というお話。

ネットでボタンのSelectorを変更しようと思い検索すると、
大抵の場合

<Button
	android:background="@drawable/任意のselector"
	他割愛
	/>

で、ハイ簡単に変更できましたね、
で説明しているところが多いし、自分も、基本的に今まで利用していたのはコレばかりだった。

というのも、
開発時にiPhoneとの兼ね合いもありボタンはだいたい画像データな上、
iPhoneアプリ開発者が画像データをノーマル時とセレクト時の二種類作らせていたため、
Androidもそれに追随して、backgroundをselectorで差し替えれば済んでいたので、あまり意識していなかった。

Androidアプリ開発的には文字データを画像の中に一緒に入れてしまうと、画面サイズへの対応が難しくなる。
そのため、Buttonに、上画像、下文字のレイアウトを使ったほうが良いのだが、
そういうときにselectorはどうやって書けば良いの?というそのまんまのお話。

でもまぁ簡単にいうと、Buttonにandroid:drawableTopして下はtext上は画像というButtonを作った場合、
Backgroundだけじゃなくて他の色も全部selector指定したい場合。

注意したいのは、バックグラウンドとテキストの色指定の方法がちょっと違って。
android:background で指定するものと
android:textColor  で指定するのとだとちょっと表記方法が違うのが特殊、というくらい。

バックグラウンドの色指定はコレ

	<selector xmlns:android="http://schemas.android.com/apk/res/android">
	    <item android:state_focused="true" android:state_pressed="false" android:drawable="@color/" />
	    <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/" />
	    <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/" />
	    <item android:drawable="@color/" />
	</selector>

テキストの色指定はこれ

	<?xml version="1.0" encoding="UTF-8"?>
	<selector xmlns:android="http://schemas.android.com/apk/res/android">
	    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" />
	    <item android:state_focused="true" android:state_pressed="true" android:color="#000000" />
	    <item android:state_focused="false" android:state_pressed="true" android:color="#000000" />
	    <item android:color="#ffffff" />
	</selector>

イメージリソースの指定はコレ

	<?xml version="1.0" encoding="UTF-8"?>
	<selector xmlns:android="http://schemas.android.com/apk/res/android">
	    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/" />
	    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/" />
	    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/" />
	    <item android:drawable="@drawable" />
	</selector>

実は、textColorをSelectorで弄るのなんて今回がはじめてってくらいにデザイン面では、
画像リソースに頼りきってたので、実はあんざいさんのHPでちらほら見てはいたけど、実践したのは始めてだったのは秘密。

参考:http://y-anz-m.blogspot.jp/2010/11/androidselector-item-color.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です