У меня есть переносимый селектор в качестве фона для каждого элемента в ListView
, чтобы выделить выбранную строку. Eveything отлично работает в Ice Cream Sandwich, но, похоже, не работает в желе Bean. Невозможно найти документацию о том, какие изменения могут привести к ее прекращению работы и что мне нужно сделать, чтобы исправить ее.
Не работая, я имею в виду, когда я нажимаю на строку в ListView
, цвет фона элемента не поворачивает цвет @color/blue
, но он делает это в ICS.
Это код селектора, который я использую (listing_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
действительно работает, а это значит, что мой селектор распознан. Из комментариев, похоже, что-то с моим приложением, так как другие смогли получить селекторов, работающих с желе Bean.
Хотя интереснее всего то, что изменение значения drawable
для состояния по умолчанию не распознается. Где у меня color/transparent
, я бы подумал, что изменение этого цвета приведет к тому, что листинг изменится на этот цвет, но это не так.
Кроме того, это также не работает в ICS.
ОБНОВЛЕНИЕ 7:
После еще большего натяжения волос я обнаружил, что длительное нажатие на элемент меню приводит к изменению цвета этого элемента. Просто нажатие на элемент все еще не работает. Даже не уверен, что означает.
** Окончательное обновление: **
Я сдаюсь, я удалил селектор и просто обновляю ListView
при щелчке и запоминаю позицию, щелкнув и выделив ее из кода. Не идеально, но не стоит пытаться исправить.