L'accent est mis sur la sélection des composants de l'interface utilisateur lorsque vous utilisez autre chose que le toucher (c'est-à-dire un d-pad, un clavier, etc.). Toute vue peut recevoir le focus, bien que certaines ne soient pas focalisables par défaut. (Vous pouvez rendre une vue focalisable avec setFocusable(true)
et la forcer à être focalisée avecrequestFocus()
.)
Cependant, il est important de noter que lorsque vous êtes en mode tactile, la mise au point est désactivée . Donc, si vous utilisez vos doigts, changer la mise au point par programme ne fait rien. L'exception à cela concerne les vues qui reçoivent des entrées d'un éditeur d'entrée. Un EditText
est un tel exemple. Pour cette situation particulière, il setFocusableInTouchMode(true)
est utilisé pour indiquer au clavier virtuel où envoyer l'entrée. UneEditText
a ce paramètre par défaut. Le clavier virtuel apparaîtra automatiquement.
Si vous ne voulez pas que le clavier virtuel apparaisse automatiquement, vous pouvez le supprimer temporairement comme @abeljus l'a noté:
InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Lorsqu'un utilisateur clique sur le EditText
, il doit toujours afficher le clavier.
Lectures complémentaires: