Est-il possible de capturer la libération d'un bouton tout comme nous capturons un clic en utilisant onClickListener()
et OnClick()
?
Je souhaite augmenter la taille d'un bouton lorsqu'il est enfoncé et le ramener à sa taille d'origine lorsque le clic est relâché. Quelqu'un peut-il m'aider comment faire cela?
Vous devez définir un OnTouchListener sur votre bouton.
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
increaseSize();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
resetSize();
}
}
};
Vous devez également gérer MotionEvent.ACTION_CANCEL. Donc le code sera:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP ||
event.getAction() == MotionEvent.ACTION_CANCEL) {
increaseSize();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
resetSize();
}
}
};
utilisez plutôt OnTouchListener ou OnKeyListener.
Vous pourrez peut-être faire cela en remplaçant les onKeyDown
et onKeyUp
. Ce sont tous deux hérités de Android.widget.TextView
. S'il vous plaît voir le Android.widget.Button
doc pour (un peu) plus d'infos.
Eric Nordvik a la bonne réponse sauf que
event.getAction() == MotionEvent.ACTION_UP
jamais été exécuté pour moi. Au lieu de cela, j'ai mis en œuvre
button.setOnClickListener(new OnClickListener() {
@Override
public boolean onClick(View v) {
resetSize();
}
};
pour la touche ACTION_UP.