【问题标题】:Gray out disabled button灰色禁用按钮
【发布时间】:2021-07-09 21:39:18
【问题描述】:

我目前正在编写我的第一个 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 可用于为禁用按钮着色,但我也无法让它工作。

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

【问题讨论】:

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


    【解决方案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"
         ../>
    

    您还可以应用主题覆盖来覆盖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>
    

    【讨论】:

    • 谢谢。我应该在哪个文件中放置最后一个 xml(样式名称="ThemeOverlay.App.FloatingActionButton" 等)?
    • 在styles.xml或themes.xml中
    • 如果我把它放在res/values/styles.xml,我得到一个编译错误:无法确定标签'@color/colorGray'的类型是什么我失踪了?
    • 我不知道。您对其他样式有疑问吗?
    • 我还没有使用任何其他样式,我必须创建那个文件
    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多