Button ,ToggleButton の背景を指定する方法

By 松田幸一
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

標準のボタンのデザインを変更したい。
しかし、Background を変更したらなんだかボタンぽい動きじゃなくなった。

背景画像をひとつだけ設定すると、ボタンを押しても、フォーカスしても設定された画像だけが表示されるためボタンらしい動きをしなくなります。

ボタン(Button) と トグルボタン(ToggleButton)の背景を変更する方法を紹介します。

ボタンの背景として用意しなければならないのは画像ファイルだけで5つあります。
必要がなければ作らなくてもいいんですが、最低でも2つは用意しましょう。

  1. 標準状態(フォーカスなし、押されていない)
  2. フォーカス状態
  3. プレス状態(押されている状態)
  4. ボタンがDisableで標準状態(フォーカスなし、押されていない)
  5. ボタンがDisableでフォーカス状態

9-patch で画像を作成します。9-patch って何?というのは省略させてください。
android-sdk  の中にある tools/draw9patch.bat で普通に作成した png 画像から 9-patch 画像を作成することができます。

my_btn_default_normal.9my_btn_default_selected.9my_btn_default_pressed.9my_btn_default_normal_disable.9my_btn_default_normal_disable_focused.9

画像の周りに黒いものがあります。これが 9-patch なんです!画面上には黒い線は表示されません。

Button の背景の設定方法はプロパティの Background に設定することになります。
Button の状態により表示される画像を指定する xml ファイルを作成します。

my_button_background.xml

ボタンの状態ごとに画像を設定しています。
state_XXX = true | false  これがボタンの状態を表しています。

Button の Background に @drawable/my_button_background と入力すれば背景画像の変更は完了です。

次は Toggle ボタンです。
用意する画像は2つです。ON と OFF

my_btn_toggle_on.9my_btn_toggle_off.9

xml ファイルを2つ作成します。

my_toggle_button_background.xml

これはON と OFF の画像を指定しただけです。
背景自体は先ほど作った Button の背景を流用します。

my_button.xml

二つのファイルを指定しました。

ToggleButton の プロパティ Background に my_button を入力すれば背景画像も ON と OFF も設定できました。

device2device3

関連する投稿