web-dev-qa-db-fra.com

Comment puis-je garder un bouton enfoncé après avoir cliqué dessus?

Duplicata possible:
Android. Comment garder un bouton affiché comme APPUYÉ jusqu'à ce que l'action créée par ce bouton soit terminée?

J'ai un bouton, et je veux que lorsque j'appuie dessus, il reste aussi appuyé (avec la couleur verte sur Froyo).

De l'aide?

mycodes_Button = (Button) findViewById(R.id.mycodes);
...
if (saved_Button.isPressed())
{
    saved_Button.setFocusable(true);
}

Quelque chose comme ça?

32
Nikitas

Utilisez le code suivant. C'est utile.

mycodes_Button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        mycodes_Button.setPressed(true);
        return true;
    }
});
36
VenkaReddy

J'ai eu ce problème avec un bouton avec un arrière-plan personnalisé et j'ai fini par utiliser état sélectionné pour cela. Cet état est disponible pour toutes les vues.

Pour l'utiliser, vous devez définir un arrière-plan de bouton personnalisé comme liste d'état :

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item Android:state_selected="false" Android:state_focused="false" 
     Android:state_pressed="false"><bitmap ... /></item>
  <item Android:state_selected="true"><bitmap ... /></item>
  <item Android:state_focused="true"><bitmap ... /></item>
  <item Android:state_pressed="true"><bitmap ... /></item>
</selector>

Ensuite, pour utiliser cet arrière-plan, disons qu'il se trouve dans /res/drawable/button_bg.xml dans votre fichier de mise en page, vous utilisez:

...
<Button Android:background="@drawable/button_bg" ... />
...

Dans votre code, vous pouvez passer à l'état (dé-) sélectionné dans votre écouteur onClick:

myButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    v.setSelected(true);
    // normal click action here
  }
});

état activé correspond mieux à la signification prévue, mais n'est disponible qu'à partir de Android 3.x et supérieur).

43
beetstra

Un ToggleButton conviendrait-il à vos besoins?

À en juger par vos commentaires, il semble que vous ne soyez pas au courant du Mode tactile . Dans ce mode, qui est la valeur par défaut pour la plupart des choses, il n'y a pas de focus (ce que vous essayez de faire). atteindre) et aucun élément sélectionné.

Vous pouvez essayer de quitter le mode tactile par programmation, mais je ne le recommanderais pas. Après une petite période de prise en main, le mode tactile offrira une bien meilleure expérience aux utilisateurs.

5
kgiannakakis