Настройка цвета фона элемента списка теряет подсветку - PullRequest
1 голос
/ 03 августа 2010

Я создал папку «Входящие» и зеркалирую некоторые функции почтового приложения по умолчанию, которое поставляется с Android.

В Mail цвет фона сообщения, которое не было прочитано, светлее, чем остальные элементы в списке. Я отразил это, установив вызов setBackgroundResource в методе getView моего адаптера. setBackgroundColor ничего не делает.

        if (!msgSum.getIsRead()) {
            LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background);
            if (l != null) {
                l.setBackgroundResource(R.color.inbox_unread);
            }
        }
        else {
            LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background);
            if (l != null) {
                l.setBackgroundResource(R.color.inbox_read);
            }
        }

Проблема в том, что предметы теряют способность выделять. Я имею в виду, что, как правило, если вы прокручиваете колесо мыши во время использования эмулятора (или если ваше устройство Android имеет какую-то возможность прокрутки, вы используете это), элементы списка становятся желтыми, как будто они имеют фокус.

Как мне выполнить то, что я пытаюсь сделать, не потеряв возможность выделять элемент списка?

Спасибо за вашу помощь

Ответы [ 2 ]

7 голосов
/ 03 августа 2010

Это потому, что подсветка рисуется за элементами списка.Вам необходимо создать список состояний, который можно нарисовать для фона вашего элемента, который устанавливает прозрачный цвет фона в выбранном состоянии.Если вы посмотрите доклад о ListView, который я дал на Google I / O 2010, вы получите пример того, как это сделать.

2 голосов
/ 04 августа 2010

По предложению Ромена Гая, я смотрел видео «Google I / O 2010 - мир ListView» на YouTube.Около минуты 31:43 он публикует фрагмент кода, который решает эту проблему.Вы должны сделать пару изменений, хотя (я разрабатываю против 2.1).Сначала вы должны объявить параметр xmlns: android в теге селектора.В вашем Java-коде вы должны вызвать convertView.setBackgroundResource (R.drawable.yourselector) вместо setBackground (которое больше не существует).

...