TextView、ImageView設置selector後無效的問題

在爲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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章