【问题标题】:Strange button behavior XML selector enabled启用了奇怪的按钮行为 XML 选择器
【发布时间】:2017-03-30 13:53:39
【问题描述】:

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

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

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

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

我做错了什么?

【问题讨论】:

    标签: android button selector


    【解决方案1】:

    将您的 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>
    

    【讨论】:

    • 不幸的是,这似乎并没有解决问题,它把我所有的按钮都变成了粉红色。
    • 您是否为按钮设置了颜色?你的风格中的 @drawable/button_color_list 是什么?
    • ColorButtonNormal 是用于更改按钮前景色同时保持其波纹效果的属性。
    • @ArthurAttout 你确定 Button 有这个属性:colorButtonNormal?
    • 你使用的是 Button,而不是自定义视图
    【解决方案2】:

    我通过这篇文章找到了我的问题的答案:

    Android custom view ignoring `android:enabled` in XML?

    由于显然无法直接从 XML 启用/禁用视图,因此我必须以编程方式设置它。

    【讨论】:

      猜你喜欢
      • 2015-08-07
      • 1970-01-01
      • 2011-02-11
      • 2019-01-12
      • 2014-09-20
      • 2013-09-24
      • 2015-07-13
      • 1970-01-01
      • 2014-08-17
      相关资源
      最近更新 更多