Отключено состояние цвета кнопки Материал - PullRequest
3 голосов
/ 06 апреля 2019

Спецификация материала показывает отключенное состояние кнопки, которое выглядит серым.

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

Я использую MaterialButton из компонентов материала из Android: https://www.material.io/develop/android/components/material-button/

Однако при выключении кнопки цвет / оттенок кнопки не меняется.

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

Просто не реализовано в Материальных компонентах Android по умолчанию?Компоненты материала определяют отключенный список состояний кнопки?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019
  1. Создайте папку /res/color (в вашем каталоге res).
  2. Добавьте новый файл цветовых ресурсов с именем, например, 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. Создайте стиль в styles.xml с одним из Widget.MaterialComponents.Button стилей в качестве его родителя и вашим списком состояний цвета в качестве тега backgrountTint:
<style name="MaterialButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
        <item name="backgroundTint">@color/color_states_materialbutton</item>
</style>
  1. Установите свой стиль на MaterialButton в макете:
<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"/>
0 голосов
/ 06 апреля 2019

Вы должны использовать ThemeOverlay и применять стиль Цветные отдельно

    <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"/>
...