Existe-t-il un moyen de changer la couleur d'un bouton désactivé dans Android via des styles ou une autre forme?
J'ai actuellement le suivant,
drawable/button_default.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/button_default_shape"/>
</selector>
drawable/button_default_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="@color/button_default_background"/>
<corners Android:radius="3dp"/>
</shape>
values / styles.xml
<style name="AppTheme.Button">
<item name="Android:background">@drawable/button_default</item>
<item name="Android:textColor">@Android:color/white</item>
<item name="Android:textAllCaps">false</item>
<item name="Android:paddingTop">10dp</item>
<item name="Android:paddingBottom">10dp</item>
<item name="Android:focusable">true</item>
<item name="Android:clickable">true</item>
<item name="Android:gravity">center</item>
<item name="Android:textStyle">bold</item>
<item name="Android:textSize">17sp</item>
<item name="Android:textAppearance">@style/CustomFontAppearance</item>
</style>
Vous devrez utiliser un sélecteur pour différents dessinables dans ces états.
Vous pouvez créer un sélecteur comme celui-ci:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/your_enabled_drawable" Android:state_enabled="true" />
<item Android:drawable="@drawable/your_disabled_drawable" Android:state_enabled="false" />
<!-- default state-->
<item Android:drawable="@drawable/your_enabled_drawable" />
</selector>
Spécifiez la couleur dans le sélecteur pour Android: state_enabled = "false" comme dessinable
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="false">
<shape>
<solid Android:color="#32ff09" />
</shape>
</item>
</selector>
Et appliquez cette ressource accessible au fond du bouton
<Button
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@drawable/drawble_name"
Android:enabled="false"
Android:text="Selector Applied Button" />
Essaye ça -
drawable/bg_button.xml: -
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/bg_button_focused" Android:state_selected="true"/>
<item Android:drawable="@drawable/bg_button_pressed" Android:state_pressed="true"/>
<item Android:drawable="@drawable/bg_button_disabled" Android:state_enabled="false" />
<item Android:drawable="@drawable/bg_button_normal"/>
</selector>
Après cela, il suffit de définir l’arrière-plan de votre bouton comme ceci -
<Button
Android:id="@+id/button"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/bg_button"
Android:text="Button"/>
Voici mon code qui fonctionne correctement avec le bouton activer et désactiver.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="true" Android:drawable="@drawable/ic_button_gradient"/>
<item Android:state_enabled="false" Android:drawable="@color/gray"/>
</selector>