为什么材料FAB禁用后不改变颜色?

问题描述 投票:0回答:1

我正在禁用“材料浮动操作”按钮,但是当禁用设置为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

android kotlin floating-action-button
1个回答
0
投票

怀疑这是罪魁祸首:

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属性。

© www.soinside.com 2019 - 2024. All rights reserved.