123

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

ここに画像の説明を入力してください

いくつかの状態のドローアブルが必要になると思います。http://developer.android.com/reference/android/R.styleable.htmlで、Switch_thumbとSwitch_trackを使用したいくつかのスタイルを見てきまし。 。使い方がわからない。

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

4

4 に答える 4

261

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

<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つの 9パッチ画像があります。

非アクティブ化されたバージョン(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つの画像を目的のスタイルに変更します。

于 2012-04-13T12:27:03.430 に答える
50

Januszによる素晴らしい詳細な返信です。しかし、答えを求めてこのページにアクセスする人のために、 Android Asset Studioからリンクされているhttp://android-holo-colors.com/(デッドリンク)を使用するのがより簡単な方法です。

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

ただし、理解が明確になるため、Januszからの返信を読むことを強くお勧めします。ツールを使用して、作業をすばやく実行します

于 2013-02-21T22:38:46.860 に答える
3

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

<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ドロアブルを定義することにより、下の画像のようにスイッチトラックとスイッチサムをカスタマイズできます。詳細については、http://www.zoftino.com/android-switch-button-and-custom-switch-examplesをご覧ください。

カスタムスイッチトラックとサム

于 2017-09-19T08:18:06.393 に答える
1

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

于 2015-10-08T09:14:58.653 に答える