1. ホーム
  2. android

[解決済み] Android Switchをスタイリッシュにする方法を教えてください。

2022-08-04 04:46:07

質問

API14で導入されたスイッチウィジェットは、デフォルトでホロのテーマでスタイルされています。 私は、ブランディングの理由から、色と形状を少し変えて、スタイルを変更したいと思います。どのようにしたらよいでしょうか。デフォルトの ICS と Samsung の touchwiz テーマの違いを見たので、それが可能でなければならないことは分かっています。

私は、いくつかの状態の描画が必要だと考えています。 http://developer.android.com/reference/android/R.styleable.html で、Switch_thumb と Switch_track で、私が求めるかもしれないもののように見えるスタイルをいくつか見ました。ただ、それらを使用する方法についてはわかりません。

私は ActionbarSherlock を使用していますが、違いがあるのでしょうか。API v14 以上を実行しているデバイスのみが、もちろん、スイッチを使用できます。

どのように解決するのですか?

背景やスイッチャー部分に使用するdrawableは、このように定義することができます。

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/switch_thumb"
    android:track="@drawable/switch_bg" />

次に、スイッチャードローアブルの異なる状態を定義するセレクタを作成する必要があります。 ここでは、Android のソースからコピーしています。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/switch_thumb_disabled_holo_light" />
    <item android:state_pressed="true"  android:drawable="@drawable/switch_thumb_pressed_holo_light" />
    <item android:state_checked="true"  android:drawable="@drawable/switch_thumb_activated_holo_light" />
    <item                               android:drawable="@drawable/switch_thumb_holo_light" />
</selector>

これは、背景の上に移動される画像であるサムドローアブルを定義しています。4つの ナインパッチ の画像がスライダーに使用されます。

非活性化バージョン(Androidが使用しているxhdpiバージョン)

押されたスライダーです。

アクティブなスライダー(オン状態)。

デフォルトバージョン(オフ状態)

また、背景には3種類の状態があり、以下のセレクタで定義されています。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/switch_bg_disabled_holo_dark" />
    <item android:state_focused="true"  android:drawable="@drawable/switch_bg_focused_holo_dark" />
    <item                               android:drawable="@drawable/switch_bg_holo_dark" />
</selector>

非活性化したバージョン。

フォーカスされたバージョン。

そして、デフォルトのバージョン。

この2つのセレクタを作成してスイッチビューに設定し、7つの画像を好みのスタイルに変更するだけで、スタイル付きスイッチを実現することができます。