Android-Selector不起作用

Overview

今天在做项目的时候,使用了一些 Selector 来给ImageView设置不同的Drawable,但是无论怎么设置ImageView的属性,Selector都不起作用。经过一番排查终于找到了原因。

错误的Selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_nav_my_normal" />
    <item android:drawable="@drawable/ic_nav_my_actived" android:state_selected="true" />
    <item android:drawable="@drawable/ic_nav_my_actived" android:state_checked="true" />
    <item android:drawable="@drawable/ic_nav_my_actived" android:state_pressed="true" />
</selector>

在上面的第一个Item定义的是 正常状态下的应该显示额Drawable,结果ImageView的Drawable切换不起作用。

解决办法

将正常状态下的Item,放到最后。如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_nav_my_actived" android:state_selected="true" />
    <item android:drawable="@drawable/ic_nav_my_actived" android:state_checked="true" />
    <item android:drawable="@drawable/ic_nav_my_actived" android:state_pressed="true" />
    <item android:drawable="@drawable/ic_nav_my_normal" />
</selector>

然后运行程序,ImageView已经可以根据状态的不同,来显示不同的Drawable了。

除非特殊声明否则,本博客文章均属 鲁迅认识的那只猹 原创,未经许可禁止转载,否则将保留追究法律责任的权利。

如果本博客损害了您的相关权益,请及时联系我,我将妥善处理。