web-dev-qa-db-fra.com

Changer la couleur de Switch en Android

J'essaie de changer la couleur de mon commutateur dans Android. Je me rends compte que j'aurai besoin de nouveaux 9patches. Je suis allé sur http://Android-holo-colors.com/ et j'ai sélectionné ma couleur et sélectionné (Switch Jelly bean). Pour utiliser Switch Jelly bean, j'ai dû utiliser: https://github.com/BoD/Android-switch-backport . Pour l'importer dans mon projet j'ai dû ajouter:

<item name="switchStyle">@style/Widget.Holo.CompoundButton.Switch</item>

à mes styles, puis en xml je dois utiliser le commutateur comme ceci:

<org.jraf.Android.backport.switchwidget.Switch
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />

Maintenant, tout avec le commutateur fonctionne bien. Ensuite, j'ai pris tout ce qui était sorti du générateur de couleurs holo Android et je l'ai mis dans les fichiers appropriés:

  • dessinable (2 fichiers de sélection)
  • drawable-hdpi (fichiers 9patch)
  • drawable-xhdpi (fichiers 9patch)
  • drawable-xxhdpi (fichiers 9patch)

puis j'ai ajouté à mon xml:

<org.jraf.Android.backport.switchwidget.Switch
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:thumb="@drawable/apptheme_switch_inner_holo_light"
Android:track="@drawable/apptheme_switch_track_holo_light" />

mais c'est toujours la couleur bleue d'origine. Je crois que je fais tout correctement. Tout se compile (xml, Java). Remarque: J'IMPORTE org.jraf.Android.backport.switchwidget.Switch dans mon Java aussi. Des idées?

13
EGHDK

Selon ceci , (réponse directe par copier-coller BoD):

  • Vous ne devez pas utiliser Android:thumb et Android:track, mais plutôt, app:thumb et app:track Et vous devez ajouter ce qui suit à la racine de votre document xml:

    xmlns:app="http://schemas.Android.com/apk/res-auto"

21
velis

Moyen le plus simple dans Android Lollipop et au-dessus,

<style name="AppTheme" parent="MaterialTheme.Light">
    ...
    <item name="Android:colorControlActivated">@color/color_switch</item>
</style>
6
Emen

pour changer la couleur du commutateur, vous pouvez utiliser deux images

  1. vert - lorsque l'interrupteur est sur ON
  2. rouge - lorsque l'interrupteur est sur OFF

maintenant mettez ce fichier dans un dossier dessinable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:drawable="@drawable/blue_checked" Android:state_checked="true"/>
    <item Android:drawable="@drawable/blue_unchecked" Android:state_checked="false"/>

</selector>

et dans le fichier XML de mise en page, utilisez-le comme ci-dessous

<CheckBox
    Android:id="@+id/user_checkbox"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:button="@drawable/notif_checkbox_selector"
/>
2
ROHIT PARMAR

Essaye ça:

switch_thumb.xml

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

Dans la disposition du commutateur:

Android:thumb="@drawable/switch_thumb"
2
sb_269

Il se peut que vous deviez mettre

style="@style/switchStyle"

dans votre XML aussi

1
SDJMcHattie