Цвет монитора 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).