Список состояний Android ListView не показывает фон элемента по умолчанию

Прочитал ряд связанных вопросов здесь, в SO, а также просмотрел документы и исходный код Android, чтобы попытаться понять это, но я в тупике, хотя, учитывая, что listSelector, кажется, применяет стили только к выбранным элементам, я не шокирован ...

У меня есть Listview, определенный в main.xml здесь:



    
    

Указанный listSelector находится здесь (в основном заимствован из списка состояний Android по умолчанию, который находится в SDK: /android/platforms/android-8/data/res/drawable/list_selector_background.xml):



    
    

    
    
    
    

    
    
    

    
    

    
    

Указанные чертежи являются формами , прямоугольники с закругленными углами, например так:



     
     

Итак, конечным результатом должен быть ListView с элементами с фоном @ drawable / shape_row по умолчанию, а затем разным цветом фона в зависимости от состояния. Когда я запускаю свой список, все работает нормально с точки зрения того, когда состояния активны, например, элемент получает фокус, нажат и т.д., но сами элементы имеют прозрачный фон, когда ни один из них не выбран (то есть состояние просмотра по умолчанию). Я надеялся, что последнее правило списка состояний


зафиксирует это состояние, но по какой-то причине оно не работает. Я перемещал вещи и пробовал разные настройки, и ничего. Если я отредактирую файл row.xml, который использую для определения элементов списка в ListView, и попытаюсь добавить конкретный android: background, который указывает на @ drawable / shape_row, каждая строка получит правильный фон, НО при нажатии, в фокусе, состояния и т. д. не обрабатываются (или, по крайней мере, их нельзя увидеть, поскольку фон никогда не меняется).

Может ли кто-нибудь указать мне в правильном направлении? Я НАСТОЛЬКО близок к тому, чтобы положить его в постель, но, попробовав почти все, просто не могу заставить элементы ListView взять фон по умолчанию и ответить на реализованный список состояний через android: listSelector.

Спасибо,

Пол

РЕДАКТИРОВАТЬ:

Также просто попытался добавить android: itemBackground = "@ drawable / shape_row" в ListView в main.xml, и неудивительно, что не повезло (в документации указано, что его следует использовать для указания фона пунктов меню, но подумал, что стоит попробовать с элементами списка.)

Попробовали еще одну вещь, добавив android: visible = "true" к каждому из селекторов и определений элементов. Документы StateListDrawable, похоже, указывают на то, что «Обеспечивает начальное состояние видимости объекта для рисования; значение по умолчанию - false» , но добавление этого ничего не изменило.

EDIT2: Итак, на основе исследования, проведенного ниже Qberticus, кажется, может быть только один набор селекторов списков для каждого представления, что подтверждает поведение селектора списка. Я также могу подтвердить, что установка android: drawSelectorOnTop действительно перемещает селектор ВПЕРЕД выбранного элемента, но это, конечно, затемняет сам элемент, так что я вижу только сам селектор (который в моем случае представляет собой цветную фигуру).

Вот как выглядит список с установленным фоном:

normal, unselected list with background set

Из-за установленного фона внешний вид при выборе элементов не меняется. Если я изменяю директиву android: drawSelectorOnTop на true и выбираю элемент, я получаю:

selected, with drawSelectorOnTop set to true

И, наконец, если я не устанавливаю фоновое изображение для элементов списка, селектор работает должным образом, но, конечно же, фоновых изображений нет. поскольку последнее правило StateSelector, похоже, не соблюдается (не должно ли оно действовать как уловка?) для невыделенных элементов, что означает отсутствие хороших пользовательских закругленных форм:

selected, no background

Итак, моя проблема остается; если я не устанавливаю фон для каждого элемента списка, я вижу, что селектор работает, НО элементы не имеют фона, когда они не выбраны. Если я установил фон для элемента, они выглядят отлично, когда не выбраны, но фон закрывает селектор. Разве просто невозможно иметь элемент списка уникальной формы с рабочими селекторами?

Спасибо всем, кто может внести свой вклад.

13
задан Paul Mennega 28 January 2011 в 21:01
поделиться