本文主要是介绍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 顺序
这篇关于Android爬坑-selector 背景不显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!