J'ai une vue personnalisée qui agit comme un bouton. Je veux changer l'arrière-plan lorsque l'utilisateur appuie dessus, rétablir l'arrière-plan à l'original lorsque l'utilisateur déplace le doigt à l'extérieur ou le libérer et je veux également gérer les événements onClick/onLongClick. Le problème est que onTouch me demande de retourner vrai pour ACTION_DOWN
ou il ne m'enverra pas l'événement ACTION_UP
. Mais si je reviens vrai l'écouteur onClick
ne fonctionnera pas.Android onTouch avec onClick et onLongClick
Je pensais que je l'ai résolu en retournant false dans onTouch et en enregistrant onClick - cela a fonctionné d'une manière ou d'une autre, mais était plutôt contre les docs. Je viens de recevoir un message d'un utilisateur me disant qu'il ne peut pas cliquer longtemps sur le bouton, alors je me demande ce qui ne va pas ici.
Une partie du code actuel:
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 faire travailler ensemble correctement?
Merci à l'avance