Material Design Button 的 disable 效果
针对 Material Design Button 的 disable 效果这里提一下. 我们经常有这样的需要,在按钮在 disable 状态下,背景色会呈现深色提醒用户不可点击. 但是目前,如果你像下面这样设置, disable 状态下背景色是没有什么变化的.
<style name="BlueButton">
<item name="android:layout_height">@dimen/button_height</item>
<item name="android:layout_width">match_parent</item>
<item name="android:textColor">@color/white</item>
<item name="android:theme">@style/BlueButtonTheme</item>
</style>
<style name="BlueButtonTheme" parent="Theme.AppCompat.Light">
<item name="colorControlHighlight">@color/dark_blue</item>
<item name="colorButtonNormal">@color/blue</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">@dimen/font_three</item>
</style>
按照以前的方式利用 background 属性加 selector 又会失去水波纹的效果.我们可以利用 colorButtonNormal 属性加 selector 达到我们所要的效果. 在 drawable目录下新建如下文件,然后 colorButtonNormal 中引用即可.
<!--selector_btn_blue-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/gray" android:state_enabled="false" />
<item android:color="@color/blue" />
</selector>
<style name="BlueButtonTheme" parent="Theme.AppCompat.Light">
<item name="colorControlHighlight">@color/dark_blue</item>
<item name="colorButtonNormal">@drawable/selector_btn_blue</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">@dimen/font_three</item>
</style>
在 Button 中 style 引用.
<Button
android:enabled="false"
android:id="@+id/submit"