Android: как сделать так, чтобы цвет фона ListView отображался позади выделения? - PullRequest
2 голосов
/ 03 декабря 2009

У меня есть ListView с пользовательским адаптером, который динамически меняет цвет фона каждой строки в зависимости от ее содержимого. GetView выглядит так:

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        View row = convertView;
        Power power = powers.get(position);
        if(row == null)
        {
            row = getLayoutInflater().inflate(android.R.layout.simple_list_item_2, parent, false);
        }

        TextView text1 = (TextView)row.findViewById(android.R.id.text1);
        TextView text2 = (TextView)row.findViewById(android.R.id.text2);

        text1.setText(power.name);
        text2.setText(power.getAttackLine());

        row.setBackgroundColor(0xFF0000FF);

        return row;
    }

Все это работает превосходно, за исключением того, что всякий раз, когда я выбираю элемент из списка, стандартная подсветка red/orange отображается только за строкой, видимой только для нескольких пикселей с каждой стороны от нее. Есть ли способ заставить выделение отображаться поверх фона?

Ответы [ 2 ]

3 голосов
/ 03 декабря 2009

Попробуйте android:drawSelectorOnTop="true" в элементе <ListView> в макете.

2 голосов
/ 03 декабря 2009

Мне кажется, проблема в том, что вы используете simple_list_item_2, в который встроены некоторые отступы / отступы. Я рекомендую сделать собственную версию simple_list_item_2, в которой для высоты и ширины установлено значение fill_parent. Вы можете увидеть последние simple_list_item_2 здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...