web-dev-qa-db-ja.com

Androidスイッチのスタイルを設定するにはどうすればよいですか?

API 14で導入されたスイッチウィジェットは、デフォルトでholoテーマでスタイル設定されています。ブランディングの理由で、色や形を少し変えて、少しスタイルを変えたいです。これについてはどうすればいいですか?デフォルトのICSとSamsungのtouchwizテーマの違いを見たように、それが可能であるに違いないことを知っています。

enter image description here

私はいくつかの状態ドロアブルが必要だと仮定し、Switch_thumbとSwitch_trackで http://developer.Android.com/reference/Android/R.styleable.html でいくつかのスタイルを見てきました私が後かもしれないもののように見えます。私はそれらを使用する方法を知りません。

それが違いを生む場合は、ActionbarSherlockを使用しています。もちろん、API v14以降を実行しているデバイスのみがスイッチを使用できます。

116
Glenn.nz

背景に使用されるドロアブルと、次のようなスイッチャー部分を定義できます。

<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つの ninepatch イメージがあります。

非アクティブ化されたバージョン(Androidが使用しているxhdpiバージョン)The deactivated version
押したスライダー: The pressed slider
アクティブなスライダー(オン状態):The activated slider
デフォルトバージョン(オフ状態): enter image description here

また、次のセレクターで定義される背景には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>

非アクティブ化されたバージョン: The deactivated version
フォーカスバージョン: The focused version
そしてデフォルトのバージョン:the default version

スタイル付きスイッチを使用するには、この2つのセレクターを作成し、スイッチビューに設定してから、7つの画像を目的のスタイルに変更します。

252
Janusz

Januszによるすばらしい詳細な返信です。しかし、答えを求めてこのページに来ている人のために、簡単な方法は http://Android-holo-colors.com/ (リンク切れ)からリンクされていますAndroid Asset Studio

すべてのツールの適切な説明は AndroidOnRocks.com (現在オフラインサイト)にあります。

ただし、理解を明確にするために、ヤヌスからの返信を読むことを強くお勧めします。このツールを使用して、本当に素早く作業を行います

50
kishu27

さまざまな色のプロパティを設定して、マテリアルスタイルをカスタマイズできます。たとえば、カスタムアプリケーションテーマ

<style name="CustomAppTheme" parent="Theme.AppCompat">
    <item name="Android:textColorPrimaryDisableOnly">#00838f</item>
    <item name="colorAccent">#e91e63</item>
</style>

カスタムスイッチテーマ

<style name="MySwitch" parent="@style/Widget.AppCompat.CompoundButton.Switch">
    <item name="Android:textColorPrimaryDisableOnly">#b71c1c</item>
    <item name="Android:colorControlActivated">#1b5e20</item>
    <item name="Android:colorForeground">#f57f17</item>
    <item name="Android:textAppearance">@style/TextAppearance.AppCompat</item>
</style>

スイッチトラックのカスタマイズとサムの切り替え xml Drawableを定義することで、下の画像のようにできます。詳細については、 http://www.zoftino.com/Android-switch-button-and-custom-switch-examples

custom switch track and thumb

3
Arnav Rao

別のはるかに簡単な方法は、9パッチの代わりに図形を使用することです。すでにここで説明されています: https://stackoverflow.com/a/24725831/512011

1
netpork