У меня есть рисуемый селектор в качестве фона для каждого элемента в 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
при нажатии, запоминаю позицию, по которой щелкнули, и выделяю ее из кода. Не идеально, но не стоит пытаться исправить.