Android奇怪的列表选择器行为

时间:2014-01-14 18:13:27

标签: android android-listview android-selector

我有一个列表,其中列表项内部有2个可点击图标。问题是在Android 2.3到Android 4.0.3上,当我按下列表项时,不仅行突出显示,而且图标突出显示,但在Android> 4.1情况并非如此,此处它的工作原理应该只有行突出显示。

我的列表选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:custom="http://schemas.android.com/apk/res-auto">

<item android:state_window_focused="false" android:state_activated="false" android:drawable="@android:color/transparent" />    
<item android:state_focused="true"    android:state_enabled="false"  android:state_pressed="true"  android:drawable="@drawable/list_selector_disabled_holo_light" />
<item android:state_focused="true"    android:state_enabled="false"                                android:drawable="@drawable/list_selector_disabled_holo_light" />    
<item android:state_focused="true"                                   android:state_pressed="true"  android:drawable="@drawable/dna_list_selector_background_transition_holo_light" />    
<item android:state_focused="false"                                  android:state_pressed="true"  android:drawable="@drawable/dna_list_selector_background_transition_holo_light" />      
<item android:state_focused="true"                                                                 android:drawable="@drawable/list_focused_holo" />    
<item android:state_activated="true"  android:drawable="@drawable/list_longpressed_holo" />

这是图标的选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:custom="http://schemas.android.com/apk/res-auto">

<item android:state_window_focused="false" android:state_activated="false" android:drawable="@android:color/transparent" />    
<item android:state_focused="true"    android:state_enabled="false"  android:state_pressed="true"  android:drawable="@drawable/list_selector_disabled_holo_light" />
<item android:state_focused="true"    android:state_enabled="false"                                android:drawable="@drawable/list_selector_disabled_holo_light" />    
<item android:state_focused="true"                                   android:state_pressed="true"  android:drawable="@drawable/dna_list_selector_background_transition_holo_light" />    
<item android:state_focused="false"                                  android:state_pressed="true"  android:drawable="@drawable/dna_list_selector_background_transition_holo_light" />      
<item android:state_focused="true"                                                                 android:drawable="@drawable/list_focused_holo" />    

我已经搜索了很多并试图找出问题,但我没有得到它。 Android 4.1上的beheviour是否已更改?

1 个答案:

答案 0 :(得分:0)

问题是,直到独占的android 4.1,按下的状态也被赋予根列表视图的子项,并看到我定义了以下内容:

<item android:state_focused="false" 
     android:state_pressed="true" 
     android:drawable="@drawable/dna_list_selector_background_transition_holo_light" />

列表项中的图标是直到android 4.1按下但没有聚焦。我不知道这是一个bug还是这样设计的,但它并没有让我觉得孩子们也得到了压迫状态。 从Android 4.1开始,列表项中的图标不再处于按下状态。

解决方法是将上面的选择器更改为:

<item android:state_focused="false"   
      android:state_pressed="true"  
      android:drawable="@android:color/transparent" />