2つ方法があります。
最も単純な方法は Button タグのパラメータで
android:background="@drawable/button_image"
や
android:background="#ff0000ff"
のように画像や background を指定する方法です。
しかし、この場合だとボタンにフォーカスがあった
場合やボタンが押された場合でも変化がありません。
そこで、ボタンにフォーカスがあった場合や、
ボタンが押された場合の色や画像を指定する方法があります。
わかりやすくするために、色の場合と画像の場合で
分けて書きます。
・色の場合
まず、次のような xml ファイルを drawable/ に作ります。
color_stateful.xml
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<color android:color="#ff5555ff" />
</item>
<item android:state_pressed="false">
<color android:color="#ff9999ff" />
</item>
</selector>
もしくは
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:color="@color/testcolor1" />
<item
android:state_pressed="true"
android:state_enabled="false"
android:color="@color/testcolor2" />
<item
android:state_enabled="false"
android:color="@color/testcolor3" />
<item
android:state_active="true"
android:color="@color/testcolor4" />
<item android:color="@color/testcolor5"/>
</selector>
・画像の場合
image_stateful.xml
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:drawable="@drawable/image1"/>
<item
android:state_pressed="true"
android:state_enabled="false"
android:drawable="@drawable/image2" />
<item
android:state_enabled="false"
android:drawable="@drawable/image3" />
<item
android:state_active="true"
android:drawable="@drawable/image4" />
<item android:color="@color/testcolor5" />
</selector>
あとは、 Button のパラメータで
android:background="@drawable/color_stateful"
や
android:background="@drawable/image_stateful"
と指定すればOK。
