Android onTouch avec onClick et onLongClick
J'ai une vue personnalisée qui agit comme un bouton. Je veux changer l'arrière-plan lorsque l'utilisateur presse, de revenir de l'arrière-plan d'origine lorsque l'utilisateur déplace le doigt à l'extérieur ou en libérer, et je tiens également à gérer onClick/onLongClick événements. Le problème est que onTouch m'oblige à retourner true pour ACTION_DOWN
ou de ne pas m'envoyer de l' ACTION_UP
événement. Mais si je retourne true, le onClick
écouteur ne fonctionne pas.
J'ai pensé que je l'ai résolu en renvoyant false dans onTouch et l'enregistrement onClick - il en quelque sorte travaillé, mais était plutôt à l'encontre de la documentation. Je viens de recevoir un message d'un utilisateur me disant qu'il n'est pas en mesure de long-cliquez sur le bouton, alors je me demandais quel est le problème ici.
Partie de l'actuel code:
public boolean onTouch(View v, MotionEvent evt)
{
switch (evt.getAction())
{
case MotionEvent.ACTION_DOWN:
{
setSelection(true); //it just change the background
break;
}
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_OUTSIDE:
{
setSelection(false); //it just change the background
break;
}
}
return false;
}
public void onClick(View v)
{
//some other code here
}
public boolean onLongClick(View view)
{
//just showing a Toast here
return false;
}
//somewhere else in code
setOnTouchListener(this);
setOnClickListener(this);
setOnLongClickListener(this);
Comment puis-je les faire travailler ensemble correctement?
Merci d'avance
OriginalL'auteur Sebastian Nowak | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
onClick
&onLongClick
est effectivement envoyés à partir deView.onTouchEvent
.si vous remplacez
View.onTouchEvent
ou de définir certainsView.OnTouchListener
viasetOnTouchListener
,vous devez vous en occuper.
de sorte que votre code doit être quelque chose comme:
OriginalL'auteur 9re