Button(ボタン)のカスタマイズ方法 【Android基礎】

この記事は2012年12月16日に書かれたものです。内容が古い可能性がありますのでご注意ください。


ボタンの見た目をカスタマイズする方法を紹介します。

 

ボタンには3つの状態があります。

「デフォルト状態」「フォーカス状態」「クリック状態」です。

見た目をカスタマイズするには、この3状態それぞれの画像ファイルを用意し、それぞれの画像がどの状態であるかを定義するためのXMLファイルを作成する必要があります。

この状態定義のXMLはres/drawableフォルダに作成します。

 

デフォルト状態        フォーカス状態        クリック状態

device-2012-11-30-184251
device-2012-11-30-184313device-2012-11-30-184440

 

以下のように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つのみ

  • このエントリーをはてなブックマークに追加

PAGE TOP