Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 禁用时,材料工厂为什么不更改颜色?_Android_Kotlin_Floating Action Button_Material Components Android - Fatal编程技术网

Android 禁用时,材料工厂为什么不更改颜色?

Android 禁用时,材料工厂为什么不更改颜色?,android,kotlin,floating-action-button,material-components-android,Android,Kotlin,Floating Action Button,Material Components Android,我正在禁用“材质浮动”操作按钮,但当“禁用”设置为“真”时,颜色不会改变。我认为材料有一个晶圆厂的主题,当禁用它应该变成浅灰色。我不想在每次启用/禁用背景时添加代码来更改背景 我目前使用的是材料版本:1.1.0 在代码中,我只是通过fab.isEnabled=false将fab设置为禁用 这是xml <com.google.android.material.floatingactionbutton.FloatingActionButton

我正在禁用“材质浮动”操作按钮,但当“禁用”设置为“真”时,颜色不会改变。我认为材料有一个晶圆厂的主题,当禁用它应该变成浅灰色。我不想在每次启用/禁用背景时添加代码来更改背景

我目前使用的是材料版本:1.1.0

在代码中,我只是通过
fab.isEnabled=false将fab设置为禁用

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

这就是禁用/启用的晶圆厂的外观:

它应该是这样的:

我怀疑这就是罪魁祸首:

无论晶圆厂的状态如何,这都将为其着色

您可以通过将色调设置为
ColorStateList
而不是原始颜色值来解决此问题。也就是说,在
res/color/
目录中创建一个名为
fab_color.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="your gray here"/>
    <item android:color="@color/color_primary"/>
</selector>

或者,您可以调整活动的主题,使FAB的默认颜色为您想要的颜色(
@color/color\u primary
),然后完全删除
应用程序:backgroundTint
属性。

版本
1.2.0
支持
浮动操作按钮中的启用/禁用状态

现在,默认样式支持禁用状态,并且基于禁用时的
colorOnSurface

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorSecondary" android:state_enabled="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>
与:


@颜色/。。。。
app:backgroundTint="@color/fab_color"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorSecondary" android:state_enabled="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>
  <com.google.android.material.floatingactionbutton.FloatingActionButton
      android:theme="@style/ThemeOverlay.Custom.FloatingActionButton"
      ../>
<style name="ThemeOverlay.Custom.FloatingActionButton" parent="">
    <item name="colorOnSurface">@color/....</item>
</style>