82 votes

Comment mettre le focus sur un widget bouton de manière programmatique ?

Est-il possible de mettre l'accent sur un widget de type bouton qui se trouve quelque part dans ma mise en page ? onCreate de l'activité, mon contrôle/focus doit être sur ce bouton de manière programmatique.

193voto

Pentium10 Points 68884

Oui, c'est possible.

Button myBtn = (Button)findViewById(R.id.myButtonId);
myBtn.requestFocus();

ou en XML

<Button ...><requestFocus /></Button>

Note importante : Le widget du bouton doit être focusable y focusableInTouchMode . La plupart des widgets sont focusable mais pas focusableInTouchMode par défaut. Assurez-vous donc de le définir dans le code

myBtn.setFocusableInTouchMode(true);

ou en XML

android:focusableInTouchMode="true"

0 votes

Je l'ai essayé dans la méthode onCreate mais cela ne fonctionne pas. Je crée des boutons de manière dynamique et je les ajoute dans LinearLayout. Quelqu'un peut-il m'aider ?

6 votes

Cela ne fonctionne pas pour moi. J'ai une EditView dans ma page qui reçoit toujours le focus.

0 votes

android:focusableInTouchMode="true" Il est nécessaire de cliquer deux fois sur un bouton, le premier clic pour mettre l'accent, le second pour effectuer l'action. Cela n'est pas approprié pour le flux commun.

4voto

Zan Points 53

Essayez ça :

btn.requestFocusFromTouch();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X