web-dev-qa-db-fra.com

État de couleur désactivé du bouton Matériau

La spécification de matériau affiche un état de bouton désactivé qui semble grisé.

https://www.material.io/design/components/buttons.html#toggle-button

J'utilise le MaterialButton des composants matériels d'Android: https://www.material.io/develop/Android/components/material-button/

Cependant, lorsque vous réglez le bouton sur désactivé, la couleur/teinte du bouton ne change pas.

<com.google.Android.material.button.MaterialButton
    Android:id="@+id/disabled_material_button"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:enabled="false"
    Android:text="@string/button_label_disabled"/>

Tout simplement pas implémenté dans Material Android Composants par défaut? Material Components définit-il une liste des boutons désactivée?

14
  1. Créez le dossier /res/color (dans votre répertoire res).
  2. Ajoutez un nouveau fichier de ressources de couleur ici, nommé quelque chose comme color_states_materialbutton.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_enabled="false"
        Android:color="@color/colorDisabled"  />
    <item Android:color="@color/colorEnabled" />
</selector>
  1. Créez un style dans styles.xml avec l'un des Widget.MaterialComponents.Button styles comme parent et votre liste d'état des couleurs comme balise backgrountTint:
<style name="MaterialButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
        <item name="backgroundTint">@color/color_states_materialbutton</item>
</style>
  1. Définissez votre style sur le MaterialButton dans votre mise en page:
<com.google.Android.material.button.MaterialButton
    style="@style/MaterialButtonStyle"
    Android:id="@+id/disabled_material_button"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:enabled="false"
    Android:text="@string/button_label_disabled"/>
19
tobiasfried

vous devez utiliser un ThemeOverlay et appliquer le style coloré séparément

    <style name="AccentButton" parent="ThemeOverlay.AppCompat.Dark">
         <!-- customize colorButtonNormal for the disable color -->
         <!-- customize colorAccent for the enabled color -->
    </style>

    <Button
        Android:id="@+id/login_button"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/fragment_login_login_button"
        Android:theme="@style/AccentButton"
        style="@style/Widget.AppCompat.Button.Colored"/>
0
Vishrut Mavani