棒棒糖:禁用按钮 - >哪种风格?

时间:2015-01-13 16:12:34

标签: android android-5.0-lollipop material-design

我试图追踪, Lollipop 如何显示一个按钮,该按钮在布局文件中被android:enabled="false"禁用。

全息

使用 Holo ,很简单:在styles_holo.xml中,我找到了Widget.Holo.Button样式,它为我提供了对@ drawable / btn_default_holo_dark的引用。在那里我找到了选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal_holo_dark" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_disabled_holo_dark" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed_holo_dark" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_focused_holo_dark" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal_holo_dark" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_disabled_focused_holo_dark" />
<item
android:drawable="@drawable/btn_default_disabled_holo_dark" />
</selector>

棒棒糖

当我尝试将相同的逻辑应用于Lollipop时,我陷入了困境:

在styles_material.xml中,我找到了样式<style name="Widget.Material.Button">,在那里我找到了对<item name="background">@drawable/btn_default_material</item>的引用。但是没有选择器?? !!相反,我发现:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>

有人可以解释一下Lollipop用于禁用按钮的特定样式。 非常感谢!

修改

我可以部分回答自己:在@drawable/btn_default_mtrl_shape我找到<solid android:color="?attr/colorButtonNormal" />的引用,后者又指向@color/btn_default_material_light,其中包含选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:alpha="@dimen/disabled_alpha_material_light"
android:color="@color/button_material_light"/>
<item android:color="@color/button_material_light"/>
</selector>

但是这个alpha值只能解释其中的一半。不知怎的,Lollipop还将海拔降低到0?

0 个答案:

没有答案