Android爬坑-selector 背景不顯示
阿新 • • 發佈:2019-02-17
今天在使用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 順序