押したら青く?反応するこの反応の色なんかを自分で設定できるらしいのでやってみた.
selectorの利用
例えばこんなボタン |
希望としては, ボタンをタップしたら,
例えばこんな風 |
setBackgroundColor(int Color)
とかいってセットしては指が離れたらまたセットしなおすとかとてもじゃないけどめんどくさい('A`)
そこで登場 selector !
1. selector.xmlの用意
前回のグラデーションのお話でも用いた, res/drawableディレクトリを使用.やっぱり色は先に作っておくのが吉. またボタンに表示するテキストは drawableではいじれないので, res/colorディレクトリへ内容がほぼ同じものを, テキスト用 selector.xmlとして作って使いましょう.
わかりやすい名前で.xmlを作成.この時, ボタンを押されたとき, 押されていないとき両方の色の指定をこの.xmlでやるので, わざわざそれぞれ.xmlを作ったりしないように.
xmlを作成する際, selector を先に Root Element: から選んでおくと楽…かな(・ω・`)
どうせ中で宣言できるけど.
わかりやすい名前で.xmlを作成.この時, ボタンを押されたとき, 押されていないとき両方の色の指定をこの.xmlでやるので, わざわざそれぞれ.xmlを作ったりしないように.
xmlを作成する際, selector を先に Root Element: から選んでおくと楽…かな(・ω・`)
どうせ中で宣言できるけど.
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@color/押されたときの色"/> <item android:state_pressed="false" android:drawable="@color/普段の色"/> </selector>
よくある話で <selector> がデフォルトの <animation-list> になっているまま作成→動かねえぞこれ
(゜д゜;三;゜д゜)
なんてこともあるので注意. …ないか('A`)
<selector>の中に2つの<item>を入れ子にして宣言. <item>にはそれぞれ"状態"がtrueのとき, falseのとき, それぞれ使う色を指定できる.
また"状態"にあたるのが
android:state_pressed
これが"ボタンが押されている状態"を表す. なのでこの場合はボタンが押されていれば上, 指が離れたら下の<item>を参照するぞ, というselectorになる.
ちなみにこの"状態", ラジオボタンに用いたいときは,
android:state_checked
を用いる必要がある. でないと押した瞬間だけ色が変わるラジオボタンの出来上がりである.orz
なおテキスト用は
android:drawable
のところを
android:color
に書き換えてやるだけ. ってゆーかdrawableが無い.
2. 実装
用意ができたらいざ実装. selectorを使いたいボタンに対して,android:background="@drawable/背景用selector" android:textColor="@color/テキスト用セレクター"
と指定してやるだけ. これで後は何もせずとも勝手に色を変えてくれます.
またしてもちなみにラジオボタンで使う場合.
android:button="@null"
してやらないと, ラジオボタンの
こいつ('A`) |
画像が使いにくい…(・ω・`)
0 件のコメント:
コメントを投稿