灰色禁用按钮

时间:2021-04-14 20:13:33

标签: android android-theme floating-action-button material-components-android

我目前正在编写我的第一个 Android 应用程序。到目前为止,我已经添加了基本布局以及浮动操作按钮。

要禁用该按钮,我使用了 FloatingActionButton#setEnabled(false)。但是,我不喜欢按钮是否被禁用没有视觉指示。我认为让用户真正知道此时是否可以按下按钮会很好。

我尝试用选择器替换按钮的 backgroundTint,但这不起作用:

res/layout/activity_detail.xml

<com.google.android.material.floatingactionbutton.FloatingActionButton
  android:id="@+id/fab_next"
  android:backgroundTint="@drawable/disableable_button" />

res/drawable/disableable_button

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@color/gray_500"/>
    <item android:state_enabled="true" android:drawable="@color/purple_700"/>
</selector>

我还了解到 Widget.AppCompat.Button.Colored 可用于为禁用按钮着色,但我也无法使其正常工作。

谁能帮我解决这个问题?提前致谢。

1 个答案:

答案 0 :(得分:1)

FloatingActionButton 处于禁用状态时,颜色基于 colorOnSurface

您可以使用如下选择器自定义它:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="@color/...." android:state_enabled="true"/>
  <item android:alpha="..." android:color="@color/...."/> <!-- disabled -->
</selector>

<com.google.android.material.floatingactionbutton.FloatingActionButton
     app:backgroundTint="@color/selector"
     ../>

enter image description here

您还可以应用主题叠加覆盖 colorOnSurface 并使用默认选择器:

<com.google.android.material.floatingactionbutton.FloatingActionButton
      android:theme="@style/ThemeOverlay.App.FloatingActionButton"
      ../>

与:

<style name="ThemeOverlay.App.FloatingActionButton" parent="">
    <item name="colorOnSurface">@color/....</item>
</style>