我目前正在编写我的第一个 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 可用于为禁用按钮着色,但我也无法使其正常工作。
谁能帮我解决这个问题?提前致谢。
答案 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"
../>
您还可以应用主题叠加覆盖 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>