Цвет монитора ListView для Android

Привет всем,

У меня есть 2 вопроса относительно ListView в Android:

  • Как я могу получить цвет строки с учетом списка? Я попытался использовать метод ListView.getSelector(), который в соответствии с его документацией должен дать мне то, что я ищу, но это дает мне объект Drawable, который я не знаю, как получить цвет от (если возможно...).

  • Как я могу установить цвет строки с ориентированным списком? Здесь я попытался использовать метод setSelector() в представлении списка, передав ему объект ColorDrawable, но результатом этого является то, что весь фон в виде списка окрашен в этот цвет... и это не то, что я хотел, конечно...

Спасибо!

Ответ 1

Выбираемый селектор списков - StateListDrawable — он содержит ссылку на несколько чертежей для каждого состояния, которое может быть, например, выбранным, сфокусированным, нажатым, отключенным...

Пока вы можете извлечь извлечение с помощью getSelector(), я не верю, что вы можете получить конкретный Drawable из StateListDrawable, и не представляется возможным программно получить цвет непосредственно из ColorDrawable в любом случае.

Что касается установки цвета, вам нужно StateListDrawable, как описано выше. Вы можете установить это в своем списке, используя атрибут android:listSelector, определяя выталкиваемое в XML следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="false" android:state_focused="true"
        android:drawable="@drawable/item_disabled" />
  <item android:state_pressed="true"
        android:drawable="@drawable/item_pressed" />
  <item android:state_focused="true"
        android:drawable="@drawable/item_focused" />
</selector>

Ответ 2

ДО ДОБАВИТЬ: @Christopher answer не работает на API 7/8 (согласно @Jonny правильному комментарию) ЕСЛИ вы используете цвета, а не чертежи. (В моем тестировании использование чертежей в соответствии с Кристофером прекрасно работает)

Вот пример FIX для 2.3 и ниже при использовании цветов:

В соответствии с @Charles Harley, есть ошибка в 2.3 и ниже, где заполнение элемента списка цветом приводит к выпадению цвета по всему списку. Его исправление заключается в определении shape drawable, содержащего нужный вам цвет, и использовании этого вместо цвета.

Я предлагаю посмотреть эту ссылку, если вы хотите просто использовать цвет в качестве селектора и ориентироваться на Android 2 (или, по крайней мере, разрешить Android 2).