2014-07-12 5 views
2

J'ai une liste ListView. A écrit un gestionnaire pour qu'il touche. Lorsque vous touchez l'élément de menu (ACTION_DOWN), je le souligne. Lorsque vous relâchez l'élément (ACTION_UP) - renvoie la couleur d'origine. Le problème est que si vous touchez et faites défiler - et ensuite l'élément est en surbrillance. Ou si vous touchez et déplacez votre doigt sur l'autre élément.ListView onTouch MotionEvent

public boolean onTouch(View v, MotionEvent event) { 
if (event.getAction()==MotionEvent.ACTION_DOWN) { 
    holder.tv_name_exercise.setTextColor(Color.parseColor("#fe9503")); 
    holder.tv_description_exercise.setTextColor(Color.parseColor("#ffffff")); 
    holder.row.setBackgroundResource(R.drawable.list_item_bg_active); 
    } 
if (event.getAction()==MotionEvent.ACTION_UP) { 
    holder.tv_name_exercise.setTextColor(Color.parseColor("#000000")); 
    holder.tv_description_exercise.setTextColor(Color.parseColor("#666667")); 
    holder.row.setBackgroundResource(R.drawable.list_item_bg); 
    }} 

Répondre

2

Au lieu d'utiliser un gestionnaire tactile, définissez votre point de vue de texte à utiliser des listes d'état de couleur pour la couleur du texte et de définir votre ressource de base pour être un drawable sélecteur. Le framework gère la sélection des ressources correctes en fonction de l'état actuel de votre vue (par exemple enfoncé).

res/couleur/exercise_color.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:color="#fe9503" /> 
    <item android:color="#000000"/> 
</selector> 

res/drawable/row_bg.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/list_item_bg_active" /> 
    <item android:color="@drawable/list_item_bg"/> 
</selector> 
+0

j'ai essayé les deux. Avec un fond de travail. Avec le texte ne veut pas travailler. - fonctionne, mais state_pressed = "true" ne fonctionne pas. C'est pourquoi j'ai essayé d'utiliser MotionEvent. –

+0

Pourriez-vous essayer de configurer android: duplicateParentState = "true" sur les TextViews? – alanv

+0

Oui, sur TextView. Avec android: duplicateParentState = "true" - travail. Senks! –