Android爬坑-selector 背景不显示

    xiaoxiao2021-12-14  19

    今天在使用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 顺序

    转载请注明原文地址: https://ju.6miu.com/read-962254.html

    最新回复(0)