119 votes

Comment puis-je style un Android Switch?

Le widget changement introduit dans l'API 14 est de style par défaut avec holo thème. Je veux un style légèrement différent, en changeant les couleurs et la forme un peu pour l'image de marque des raisons. Comment aller à ce sujet? Je sais que cela doit être possible, comme j'ai vu la différence entre la valeur par défaut de l'ICS et les samsungs touchwiz thème

enter image description here

je suppose malade besoin d'un certain état à un drawable, et j'ai vu un peu les styles de http://developer.android.com/reference/android/R.styleable.html avec Switch_thumb et Switch_track qui ressemblent à ce que j'ai peut-être après, je juste ne sais pas comment faire pour aller sur leur utilisation.

Im en utilisant ActionbarSherlock si cela fait une différence, même si je comprends que seuls les périphériques exécutant API v14 ou ci-dessus seront en mesure d'utiliser un interrupteur à tous, Donc c'est purement pour ces dispositifs.

254voto

Janusz Points 52607

Vous pouvez définir l'un drawable qui sont utilisés pour l'arrière-plan, et le sélecteur de la partie comme ceci:

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

Maintenant, vous devez créer un sélecteur qui définit les différents états de l'aiguilleur drawable. Ici les copies à partir de l'Android sources:

<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>

Ceci définit le pouce drawable, l'image est déplacée au-dessus de l'arrière-plan. Il y a quatre ninepatch les images utilisées pour le curseur:

Le désactivé version (xhdpi version Android est l'utilisation d')The deactivated version
La touche de curseur: The pressed slider
Le curseur activé (l'état):The activated slider
La version par défaut (état off): enter image description here

Il y a également trois états différents pour l'arrière-plan qui sont définis dans le sélecteur suivant:

<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>

Le désactivé version: The deactivated version
La version: The focused version
Et la version par défaut:the default version

Pour avoir un style interrupteur il suffit de créer deux sélecteurs, les mettre à votre Commutateur d'Afficher et de modifier ensuite les sept images de votre style désiré.

50voto

kishu27 Points 1979

C'est un impressionnant réponse détaillée par Janusz. Mais juste pour le plaisir des gens qui viennent à cette page pour les réponses, le moyen le plus facile est à http://android-holo-colors.com/ lié à partir d'Android Studio Actif

Une bonne description de tous les outils sont à AndroidOnRocks.com (site hors ligne maintenant)

Toutefois, je recommande fortement à tout le monde de lire la réponse de Janusz car elle permettra une compréhension plus claire. Utilisez l'outil pour faire des choses très rapide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X