android:state_pressed 不工作

android:state_pressed is not working

我在 res/drawable 中有以下 XML 代码,我将按钮 background 设置为此 drawable。然而,当我按下按钮时,它并没有改变 color。感谢帮助

<item android:state_enabled="false"
    android:drawable="@color/colorAccent">
</item>

<item android:state_enabled="true"
    android:drawable="@color/colorPrimary">
</item>

<item
    android:state_selected="false"
    android:state_pressed="true"
    android:drawable="@color/black">
</item>

你需要记住 android 逐行阅读并返回第一个正确的陈述。 因为您在 state_Selected 之前启用了 false / true 项目,所以它将始终选择 enabled = false / true 项目。 只需将您的底部代码移动到 "state_enabled" 之前,如下所示:

<item
    android:state_selected="false"
    android:state_pressed="true"
    android:drawable="@color/black">
</item>

<item android:state_enabled="false"
    android:drawable="@color/colorAccent">
</item>

<item android:state_enabled="true"
    android:drawable="@color/colorPrimary">
</item>

    <selector>
    <item android:state_pressed="true" android:drawable="#EDCFE9"/>
    <item android:state_selected="true" android:drawable="#EDCFE9"/>
    <item android:drawable="#603F86"/>
    </selector>

这将改变按下按钮时的按钮颜色。

指定选择器字段时顺序很重要 - 从上到下首先匹配的选择器将被显示。默认按钮状态应始终最后指定。

使用以下代码创建一个新的可绘制对象:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/pink"/> <!-- pressed state -->
<item android:drawable="@color/blue"/> <!-- default state -->
</selector>

将以下颜色添加到 values > colors.xml 文件

<color name="blue">#49B8C7</color>
<color name="pink">#FF8EB9</color>