Android: トグルボタンのスタイル変更

Pocket

AndroidのToggleButton

トグルボタンはON/OFFを切り替えるためのボタンだ。
ON/OFF時に表示スタイルが替わって現在の状態がわかりやすいので
2つあるステータスを切り替えるような動作をさせるときにはトグルボタンを使うのが良い。

トグルボタンをビューに配置するにはレイアウトファイルに次のように記述する。


    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOn="ON"
        android:textOff="OFF"
        android:checked="false"/>

android:checkedはステータスの初期値である。ボタンを押す度にtrueとfalseが切り替わる。

表示はこのようになる。

Androidのトグルボタン

このトグルボタンの背景色を変えたいときはbackgroundにdrawableを指定する。
#FFFFFF等のカラーコードを指定しても反映されるが、その場合ONでもOFFでも同じ背景になってしまいトグルらしくない。

トグルボタンのDrawable

トグルボタンのスタイルを変更するにはres/drawableに3つのxmlファイルを作成する。
ONとOFFの状態を持つボタンtoggle_button.xml、OFF状態のスタイルを指定するtoggle_status_off.xml、ON状態のスタイルを指定するtoggle_status_on.xmlだ。
※toggle_button.xmlからその他2つのスタイルを参照するので、その整合が取れていればファイルの名前はなんでもよい。

res/drawable/toggle_button.xml


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/toggle_status_on"
        android:state_checked="true"
        />

    <item
        android:drawable="@drawable/toggle_status_off"
        android:state_checked="false"
        />
</selector>

res/drawable/toggle_status_off.xml


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- ボタンの形と色 -->
    <item>
        <shape android:shape="rectangle">
            <stroke
                android:color="#666666"
                android:width="5dp"
                />
        </shape>
    </item>
    <item android:bottom="5dp">
        <shape android:shape="rectangle">
            <solid android:color="#dddddd"/>
        </shape>
    </item>
</layer-list>

res/drawable/toggle_status_on.xml


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- ボタンの形と色、OFFのときと下線の色を変える -->
    <item>
        <shape android:shape="rectangle">
            <stroke
                android:color="#2ca9e1"
                android:width="5dp"
                />
            <size
                android:width="160dp"
                android:height="40dp" />
        </shape>
    </item>
    <item android:bottom="5dp">
        <shape android:shape="rectangle">
            <solid android:color="#dddddd"/>
        </shape>
    </item>
</layer-list>

ToggleButtonの背景にDrawableを指定

上記のように定義したdrawableをToggleButtonのandroid:backgroundに指定すると背景のスタイルが変更される。


    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOn="ON"
        android:textOff="OFF"
        android:checked="false"
        android:background="@drawable/toggle_button"
    />

Androidのトグルボタンをカスタマイズ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です