2010-08-16 2 views
2

Я пытаюсь иметь ListView, который будет отображать каждую строку в заданном цвете, в зависимости от содержимого этой строки, но все же разрешить рисованию селектора. Как и сейчас, если я вызываю View.setBackgroundColor в строке, он правильно окрашивает фон, но селектор не рисуется.Раскраска ListView строка в зависимости от содержимого

ответ

2

У вас есть три основных варианта.

Один из подходов состоит в том, чтобы использовать android:drawSelectorOnTop="true" и установить селектор вашего ListView, чтобы быть прозрачным/полупрозрачным, поэтому, когда он нарисован поверх строки, вы все равно можете видеть содержимое строки.

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

Вы также можете зарегистрировать приемник выбора с помощью ListView и выполнить пользовательские изменения цвета в зависимости от того, когда выбор изменится.

+0

Я попытался использовать андроид: drawSelectorOnTop = "true", но он заканчивает рисование по всему представлению. Я также пробовал использовать StateListDrawable, но в итоге он удаляет фон на цветных рядах при выборе строки и состоянии допустимых изменений. Возможно, это связано с тем, что я использую сложный вид с несколькими текстовыми представлениями и флажок вместо простого TextView, где я видел, как эти методы работают. – cmccurdy

+0

«Я пытался использовать андроид: drawSelectorOnTop =« true », но он заканчивается просмотром всего представления». - вот почему он должен быть прозрачным/полупрозрачным, как я отметил в своем ответе. – CommonsWare

+0

Думал, что вчера я пытался это сделать, но, видимо, сегодня это работает. Спасибо за помощь. – cmccurdy

Смежные вопросы