Почему Material FAB не меняет цвета при отключении? - PullRequest
0 голосов
/ 11 марта 2020

Я отключаю кнопку Material Floating Action, но цвет не изменяется, если для параметра disabled установлено значение true. Я думал, что у Material есть тема для FAB, и когда она отключена, она должна стать светло-серой. Я не хочу добавлять код для изменения фона каждый раз, когда он включен / отключен.

В настоящее время я работаю над версией материала: 1.1.0

В коде, который я только что установил для fab на значение fab.isEnabled = false

Вот xml

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/save_reservation_fab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/keyline_2"
                app:backgroundTint="@color/color_primary"
                android:src="@drawable/ic_save_black_72dp"
                app:tint="@color/color_on_primary"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"/>

Вот так выглядит отключенный / включенный фаб:

enter image description here

Он должен выглядеть примерно так:

enter image description here

1 Ответ

0 голосов
/ 11 марта 2020

I подозреваю , что это виновник:

app:backgroundTint="@color/color_primary"

Это будет окрашивать цвет вашего FAB независимо от его состояния.

Вы можете решить эту проблему, установив оттенок на ColorStateList вместо необработанного значения цвета. То есть создайте файл с именем fab_color.xml в своем каталоге res/color/ и включите его:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="your gray here"/>
    <item android:color="@color/color_primary"/>
</selector>

И вместо этого измените свой оттенок:

app:backgroundTint="@color/fab_color"

В качестве альтернативы вы можно настроить тему своей деятельности так, чтобы цвет по умолчанию для FAB был тем цветом, который вы хотите (@color/color_primary), а затем полностью удалить атрибут app:backgroundTint.

...