Селектор Drawable не работает в Jelly Bean

У меня есть рисуемый селектор в качестве фона для каждого элемента в ListView, чтобы выделить выбранную строку. Все отлично работает в Ice Cream Sandwich, но, похоже, не работает в Jelly Bean. Не могу найти документацию, в которой говорится, какие изменения могли привести к тому, что он перестал работать, и что мне нужно сделать, чтобы это исправить.

Под неработающим я подразумеваю, что когда я нажимаю на строку в ListView, цвет фона элемента не меняет цвет @color/blue, но в ICS это происходит.

Это код селектора, который я использую (листинг _selector.xml):

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

   <item android:state_focused="true" android:drawable="@color/blue" />

   <item android:state_pressed="true" android:drawable="@color/blue" />

   <item android:state_activated="true" android:drawable="@color/blue_selected" />  

   <item android:state_selected="true" android:drawable="@color/blue_selected" />

   <item android:drawable="@android:color/transparent" />

</selector>

Это макет пункта ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"  
    android:layout_height="fill_parent" 
    android:orientation="horizontal"
    android:background="@color/listing_selector"    
>

    <TextView 
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true" 
    />

</RelativeLayout>

Это ресурс синего цвета:

<resources>
    <color name="blue">#ff33b5e5</color>       
</resources>

ОБНОВЛЕНИЕ 1:

Пробовал переместить селектор из папки colorв папку drawableи обновить код на этот :

android:background="@drawable/listing_selector"

. ОБНОВЛЕНИЕ 2:

Кроме того, на ListViewпопытался добавить это:

    <ListView android:id="@android:id/list"
        android:layout_width="wrap_content"  
        android:layout_height="fill_parent" 
        android:listSelector="@drawable/listing_selector"   
    />

ОБНОВЛЕНИЕ 3:

Я думал, что это может быть что-то в моем коде, но я удалил весь код из onListItemClickиз ListView, и все же selectorне работает.

ОБНОВЛЕНИЕ 4:

Я сузил его до state_selectedили state_activatedне работает, так как state_pressedпохоже работает

ОБНОВЛЕНИЕ 5:

Думаю, я ошибся. Я не думаю, что селектор вообще распознается. Я путал встроенный -в ListView, подсвечивающий как мой селектор. Теперь мне интересно, имеет ли это какое-то отношение к тому, как настроен мой проект. У меня есть селектор в классе библиотеки. Возможно, что-то изменилось с этим с ICS на JB, однако перемещение селектора в проект моего приложения, похоже, не помогло.

ОБНОВЛЕНИЕ 6:

Хорошо, после того, как я еще немного подергал за волосы, я снова сузил его до того, что state_selectedили state_activatedне распознаются, поскольку изменение цвета для state_pressedработает, что означает, что мой селектор распознается.Судя по комментариям, что-то конкретно с моим приложением, поскольку другим удалось заставить селекторы работать с Jelly Bean.

Хотя интересно и то, что изменение значения drawableдля состояния по умолчанию не распознается. Там, где у меня есть color/transparent, я бы подумал, что изменение этого цвета на цвет приведет к тому, что список изменится на этот цвет, но это не так.

Кроме того, это также не работает в ICS.

ОБНОВЛЕНИЕ 7:

После еще большего выдергивания волос я обнаружил, что длительное -нажатие на элемент меню приводит к изменению цвета этого элемента. Просто нажать на элемент по-прежнему не работает. Даже не уверен, что это значит.

**Окончательное обновление:**

Я сдаюсь, я удалил селектор и просто обновляю ListViewпри нажатии, запоминаю позицию, по которой щелкнули, и выделяю ее из кода. Не идеально, но не стоит пытаться исправить.

13
задан Kris B 25 September 2012 в 00:12
поделиться