web-dev-qa-db-fra.com

Changer la couleur d'un bouton désactivé dans Android

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

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

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" />
4
Prabakaran

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"/>
3
Varundroid

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