为什么设置状态时按钮的背景不会改变?

时间:2017-01-11 08:25:39

标签: android view background selector

我用selector制作了一个按钮 selector如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/btn_select"
        android:state_selected="true"
        android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_normal"/>
</selector>

然后,我将按钮状态设置为如下所示:

btn.setSelected(true);

但按钮的背景未更改为btn_select
为什么呢?

2 个答案:

答案 0 :(得分:2)

删除属性android:state_pressed="true"

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/btn_select"
        android:state_selected="true"/>
    <item android:drawable="@drawable/btn_normal"/>
</selector>

如果您指定android:state_pressed="true",则只有在按下按钮时才会更改背景。

答案 1 :(得分:0)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
    android:drawable="@drawable/btn_select"
    android:state_selected="true"
    android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_normal"/>
</selector>

在您的xml文件中

android:background="@drawable/style_button"

在按钮标记

中使用此功能