我有一个必须动态启用/禁用的按钮。选中右侧开关后,必须启用该按钮。取消选中开关时,必须禁用该按钮。我已经使用MVVMlight中的Bindings完成了这项工作。
取消选中开关的默认状态,因此必须禁用该按钮。
按钮具有自己的颜色状态列表,禁用时为灰色,启用时为蓝色。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/third_light_gray"/>
<item android:state_enabled="true" android:color="@color/light_blue"/>
</selector>
绑定工作正常,按钮按预期启用/禁用。 但是,应禁用该按钮的默认状态,但默认情况下始终启用该状态。
<Button
android:id="@+id/buttonListProtections"
...
android:enabled="false"
android:theme="@style/Gohy.Button" />
按钮样式:
<style name="Gohy.Button" parent="Widget.AppCompat.Button.Colored">
<item name="android:textColor">@color/white</item>
<item name="colorButtonNormal">@drawable/button_color_list</item>
<item name="android:padding">30dp</item>
</style>
我做错了什么?
答案 0 :(得分:0)
将您的selector.xml更改为:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/light_blue" android:state_enabled="true"/>
<item android:drawable="@color/third_light_gray" android:state_enabled="false"/>
</selector>
并将你的风格修改为:
<style name="Gohy.Button" parent="Widget.AppCompat.Button.Colored">
<item name="android:textColor">@color/colorAccent</item>
<item name="android:background">@drawable/color_selector</item>
<item name="android:padding">30dp</item>
</style>
答案 1 :(得分:0)
我通过这篇文章找到了我的问题的答案:
Android custom view ignoring `android:enabled` in XML?
由于显然无法直接从XML启用/禁用视图,因此我必须以编程方式设置它。