2014-12-10 2 views
0

У меня есть ListView, который я хочу, чтобы фон его элемента превращался в зеленый цвет, когда элемент был нажат и остается серым, когда я отпускаю палец. Я использую селектор (listview_item_indicator.xml) для достижения этой цели:android: state_selected = "true" не работает в элементе ListView

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/grey" android:state_selected="true" ></item> 
    <item android:drawable="@color/green" android:state_pressed="true"></item> 
</selector> 

Затем я обновить файл XML элемента ListView, чтобы применить этот selecor так:

android:background="@drawable/listview_item_indicator" 

Результатом является он становится зеленым, когда я нажимаю элемент, но он не держится серым, когда я отпускаю палец (он поворачивается к тому, что было до того, как я нажал). Я думаю, это означает, что <item android:drawable="@color/green" android:state_pressed="true"></item> работал, но <item android:drawable="@color/grey" android:state_selected="true" ></item> не работал. Зачем?

+0

может делать setSelected (правда) для щелкнули помощи элемента. –

+0

set default drawable color в селекторе –

ответ

1

state_selected для выбора с помощью трекбола или D-Pad

Я думаю, что вы имеете в виду API 11 state_activated

См: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

EDIT: Вы также должны:

1) Установить список видов на один выбор:

<ListView 
     android:choiceMode="singleChoice" /> 

2) Выделите элемент с помощью listView.setItemChecked(index, true);

+0

state_selected представляет, когда в данный момент выбран вид (или один из его родителей). State_actived представляет, когда объект или его родитель был «активирован», что означает, что пользователь в настоящее время отметил его как представляющий интерес. Он также не работает, когда я переключаюсь на state_activated – John

+0

Ну, это еще не все, что вам нужно сделать. – tachyonflux

0

Вы, вероятно, следует использовать android:listSelector вместо android:background

0

Определить состояние по умолчанию.

Попробуйте этот селектор:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/grey" android:state_selected="true" ></item> 
    <item android:drawable="@color/green" android:state_pressed="true"></item> 
    <item android:drawable="@color/white" ></item> 
</selector> 
Смежные вопросы