Button ,ToggleButton の背景を指定する方法
標準のボタンのデザインを変更したい。
しかし、Background を変更したらなんだかボタンぽい動きじゃなくなった。
背景画像をひとつだけ設定すると、ボタンを押しても、フォーカスしても設定された画像だけが表示されるためボタンらしい動きをしなくなります。
ボタン(Button) と トグルボタン(ToggleButton)の背景を変更する方法を紹介します。
ボタンの背景として用意しなければならないのは画像ファイルだけで5つあります。
必要がなければ作らなくてもいいんですが、最低でも2つは用意しましょう。
- 標準状態(フォーカスなし、押されていない)
- フォーカス状態
- プレス状態(押されている状態)
- ボタンがDisableで標準状態(フォーカスなし、押されていない)
- ボタンがDisableでフォーカス状態
9-patch で画像を作成します。9-patch って何?というのは省略させてください。
android-sdk の中にある tools/draw9patch.bat で普通に作成した png 画像から 9-patch 画像を作成することができます。
![]()
![]()
![]()
![]()
![]()
画像の周りに黒いものがあります。これが 9-patch なんです!画面上には黒い線は表示されません。
Button の背景の設定方法はプロパティの Background に設定することになります。
Button の状態により表示される画像を指定する xml ファイルを作成します。
my_button_background.xml
ボタンの状態ごとに画像を設定しています。
state_XXX = true | false これがボタンの状態を表しています。
Button の Background に @drawable/my_button_background と入力すれば背景画像の変更は完了です。
次は Toggle ボタンです。
用意する画像は2つです。ON と OFF
![]()
![]()
xml ファイルを2つ作成します。
my_toggle_button_background.xml
これはON と OFF の画像を指定しただけです。
背景自体は先ほど作った Button の背景を流用します。
my_button.xml
二つのファイルを指定しました。
ToggleButton の プロパティ Background に my_button を入力すれば背景画像も ON と OFF も設定できました。




