ボタンの見た目をカスタマイズする方法を紹介します。
ボタンには3つの状態があります。
「デフォルト状態」「フォーカス状態」「クリック状態」です。
見た目をカスタマイズするには、この3状態それぞれの画像ファイルを用意し、それぞれの画像がどの状態であるかを定義するためのXMLファイルを作成する必要があります。
この状態定義のXMLはres/drawableフォルダに作成します。
デフォルト状態 フォーカス状態 クリック状態
以下のようにXMLを定義します。
@drawable/android_pressed, @drawable/android_focused, @drawable/android_normalは
それぞれクリック状態、フォーカス状態、デフォルト状態の画像ファイルです。
すべてres/drawableフォルダに保存しておきます。
res/drawable/android_button.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/android_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/android_focused" android:state_focused="true" /> <item android:drawable="@drawable/android_normal" /> </selector>
状態 |
属性値 |
概要 |
クリック状態 |
android:state_pressed=“true” |
ボタンが押されている間 |
フォーカス状態 |
android:state_focused=“true” |
ボタンがフォーカスされている間 (トラックボールや矢印キーでハイライトされている間) |
デフォルト状態 |
なし |
通常 (pressed状態でもfocused状態でもない間) |
あとはButtonのbackgroundにandroid_buttonを指定すれば完了です。
res/layout/activity_main.xml
<Button android:id="@+id/button1" android:focusable="true" android:focusableInTouchMode="true" android:background="@drawable/android_button" android:onClick="showMessage" />
android:background属性はボタンの背景を設定するための属性で、この属性に先ほど作成したXMLファイルを参照設定することにより、通常のボタン用イメージを置き換えることができます。
また、android:onClick属性はこのウィジェットがクリックされた時に呼び出されるメソッド名を定義することができ、
通常はコールバックメソッドを定義することでButtonクリック時の処理を定義してきましたが、このようにレイアウトXMLと連携させる定義方法もあります。
この際、MainActivity.javaには以下のようなメソッドを定義します。
public void showMessage(View view){ // ここに処理を記述 }
このメソッドが満たすべき要件は以下の3つです。
•publicメソッドである
•戻り値がvoidである
•引数はViewクラスを1つのみ