четверг, февраля 21, 2013

Выделить фоном нажатия элементов ListView

Чтобы нажатый элемент ListView выделялся бы нужным фоном, нужно:

1. определить цвет для "обычного" фона, используемый для исходного состояния, и цвет для фона, используемого для выбранного или нажатого элемента списка:


    <color name="background_default">...</color>
    <color name="background_selected">...</color>

2. создать селектор для выбора цвета фона в зависимости от состояния элемента
drawable/item_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/background_selected" android:state_pressed="false" android:state_selected="true"/>
    <item android:drawable="@color/background_selected" android:state_pressed="true"/>
    <item android:drawable="@color/background_default"/>
</selector>

3. указать свежесозданный селектор в качестве фона для элемента, отображаемого в списке
layout/listview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/listitem_background_selector" ... ... ...>
   ... ... ...

</LinearLayout>

вместо п. 3 можно сделать проще и указать свойство ListView:
android:listSelector="@drawable/background_selected"

Готово.

Комментариев нет: