在爲TextView、ImageView設置selector後,必須在代碼中爲其設置點擊監聽,否則selector無效,點擊無法改變顏色,此問題在項目開發時遇到。
解決:
記得View要加上加上clickable="true",不然它的selector 是不會有效果。
android:clickable ="true"
其他補充:
1、由於TextView,RelativeLayout(LinearLayout) 默認不具備可點擊性的,要讓background的selector 起作用有兩種方法:
一、在代碼中給其設置點擊事件OnClickListener
二、在xml中設置clickable = true
2、selector寫的不對,不點擊時的默認效果應該放在最後面。如下面這樣,會不起作用:
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/assemble_item_bg"/>
<itemandroid:drawable="@drawable/assemble_item_bg_pressed"android:state_enabled="true"android:state_focused="true"android:state_pressed="false"/>
<itemandroid:drawable="@drawable/assemble_item_bg_pressed"android:state_enabled="true"android:state_pressed="true"/>
<itemandroid:drawable="@drawable/assemble_item_bg_pressed"android:state_focused="true"android:state_pressed="true"/>
</selector>
應該這樣纔有點擊效果:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/assemble_item_bg_pressed" android:state_enabled="true" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@drawable/assemble_item_bg_pressed" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="@drawable/assemble_item_bg_pressed" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/assemble_item_bg"/>
</selector>
注意:用顏色值而不是用圖片作爲selector時,要這樣用:
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
<itemandroid:drawable="@color/auto_complete_textview_normal_pressed"android:state_pressed="true"/>
<itemandroid:drawable="@color/auto_complete_textview_normal"/>
</selector>