3

Это то, что я использую для выбора элемента списка:Элемент списка долгое нажатие переход

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
<item android:drawable="@color/red" android:state_pressed="true"/> 
<!-- pressed --> 
<item android:drawable="@color/green" android:state_pressed="false"/> 
<!-- normal --> 
</selector> 

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

+1

Чтобы выполнить это, вы можете использовать ['Переход (Drawable)'] (http://developer.android.com/guide/topics/resources/drawable-resource.html#Transition). Для примера в реальной жизни взгляните на [переход] (https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/drawable/abs__list_selector_background_transition_holo_light.xml), который является частью селектора списков в ActionBarSherlock. –

ответ

2

Вы можете использовать list_selector_background, как это, как предложил here

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_window_focused="false" android:drawable="@android:color/transparent" /> 
     <!-- 
       Even though these two point to the same resource, have two states so 
       the drawable will invalidate itself when coming out of pressed state. 
     --> 
     <item android:state_focused="true" android:state_enabled="false" 
       android:state_pressed="true"  android:drawable="@drawable/list_selector_background_disabled" /> 
     <item android:state_focused="true" android:state_enabled="false" 
       android:drawable="@drawable/list_selector_background_disabled" /> 
     <item android:state_focused="true" android:state_pressed="true" 
       android:drawable="@drawable/list_selector_background_transition" /> 
     <item android:state_focused="false" android:state_pressed="true" 
       android:drawable="@drawable/list_selector_background_transition" /> 
     <item android:state_focused="true" 
       android:drawable="@+drawable/list_selector_background_focus" /> 
</selector> 

И использовать переход на длительное нажатие, Как предложил here: -

<transition xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/list_selector_background_pressed" /> 
    <item android:drawable="@drawable/list_selector_background_longpress" /> 
</transition> 

Может быть, это поможет вам ..

+0

Я пробовал это. Не помогает! –

+0

Вы поняли это? У меня такая же проблема, код выглядит неплохо, но переход не происходит, только первый цвет в нем используется при длительном нажатии. –

Смежные вопросы