启用了奇怪的按钮行为XML选择器

时间:2017-03-30 13:53:39

标签: android button selector

我有一个必须动态启用/禁用的按钮。选中右侧开关后,必须启用该按钮。取消选中开关时,必须禁用该按钮。我已经使用MVVMlight中的Bindings完成了这项工作。

enter image description here

取消选中开关的默认状态,因此必须禁用该按钮。

按钮具有自己的颜色状态列表,禁用时为灰色,启用时为蓝色。

<?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>

我做错了什么?

2 个答案:

答案 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启用/禁用视图,因此我必须以编程方式设置它。