2017-01-30 1 views
0

Я использую этот код ниже, но он не работает должным образом: если я выбираю элемент, фон меняется. Но фон меняется также, если я ставил только фокус на элемент, не выбирая его. Зачем ?Как выделить нажатые элементы в ListView?

Добавлено в мой ListView:

android:listSelector="@drawable/bg_key" 

@ вытяжке/bg_key

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    android:id="@+id/myselector" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_activated="false" 
     android:drawable="@color/activated_color" /> 

</selector> 

color.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="activated_color">#1d1d1d</color> 
</resources> 
+0

Возможно использовать 'pressed' и' focused' состояния? –

+0

@Rotwang Я добавил state_pressed = "true" state_focused = "false" и view.setPressed (true); в методе onItemClick, но он все еще не работает. – xRobot

+0

'Добавлен в список listview ...' это не выбор * для каждого элемента? –

ответ

0

Вы можете выделить/обеспечить мультипликационный эффект на ваш список элементов, используя th е следующее:

Создать item_ripple.xml селектора в вашем вытяжке:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="@color/activated_color"></solid> 
     </shape> 
    </item> 

    <item > 
     <shape> 
      <solid android:color="@android:color/transparent"></solid> 
     </shape> 
    </item> 

</selector> 

Создать селектор item_ripple.xml в вашей вытяжке-v21

<?xml version="1.0" encoding="utf-8"?> 
<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/activated_color"> 

    <item 
     android:id="@android:id/mask" 
     android:drawable="@android:color/white" /> 
</ripple> 

Вам нужно добавить этот селектор в качестве фона вашего макета объекта:

android:background="@drawable/item_ripple" 
+0

Что такое drawable-v21? – xRobot

+0

Создайте новый каталог в папке res и назовите его как drawable-v21. Это означает, что если текущая версия ОС OS <= 21, рассмотрите возможность использования ресурсов, присутствующих в этой папке, если они не представлены, ресурсы по папке с возможностью выбора используются по умолчанию. –

0

Вы можете использовать pre ssed состояние в файле селекторного

/drawable/list_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:drawable="@android:color/holo_red_light" android:state_pressed="true"/> 

</selector> 

затем установите следующий атрибут в вашей ListView

android:listSelector="@drawable/list_selector"