Android爬坑-selector 背景不显示

今天在使用selector设置view的背景的时候,本来是想获得焦点的时候是一个背景,按钮被按下的时候是另外一个背景,正常情况下呢又是另外一个背景。

刚开始的写法是这样的
[html] view plain copy
在CODE上查看代码片派生到我的代码片

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  

    <item android:drawable="@drawable/media_play_view_focus_" android:state_selected="true"/>  
    <item android:drawable="@drawable/media_play_view_focus_" android:state_focused="true"/>  
    <item android:drawable="@drawable/media_play_view_press_" android:state_pressed="true"/>  
<span style="white-space:pre">    </span><item android:drawable="@drawable/media_play_view_bg_"/>  
</selector>  

虽然我在第三个item上添加了按下是的背景图片,但是并没有生效,后来查了下,原因是:

需要注意selector中 item 的顺序:一旦前面的一个 item 已经满足匹配的状态,后面的 item 就不会去执行了

我的按下的操作满足了第二条item(因为只有上焦点了才能点击),按照上面的说法,不会执行第三条item了。

于是,我这样改造了一下:

[html] view plain copy
在CODE上查看代码片派生到我的代码片

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  

    <item android:drawable="@drawable/media_play_view_focus_" android:state_selected="true"/>  
    <item android:drawable="@drawable/media_play_view_press_" android:state_focused="true" android:state_pressed="true" />  
    <item android:drawable="@drawable/media_play_view_focus_" android:state_focused="true"/>  
    <item android:drawable="@drawable/media_play_view_bg_"/>  

</selector>  

把press状态提前了,并且设置了焦点属性也是true(因为当点击的时候,即有焦点事件又有press事件)。这样设置之后效果就出来了。

这样看来,selector中的item的顺序是有玄机的。。。。

参考文章:

写selector的xml文件时,需注意item的顺序,不带状态的item放在最后,否则selector无效

Android中的Selector的用法

android selector item 顺序

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值