287 votes

Comment détecter si un clavier logiciel est visible sur un appareil Android?

Existe-t-il un moyen dans Android de détecter si le clavier logiciel (ou logiciel) est visible à l'écran?

Je vous remercie.

77voto

IHeartAndroid Points 874

essaye ça:

 InputMethodManager imm = (InputMethodManager) getActivity()
            .getSystemService(Context.INPUT_METHOD_SERVICE);

    if (imm.isAcceptingText()) {
        writeToLog("Software Keyboard was shown");
    } else {
        writeToLog("Software Keyboard was not shown");
    }
 

75voto

user770428 Points 271

Il n'y a pas de moyen direct - voir http://groups.google.com/group/android-platform/browse_thread/thread/1728f26f2334c060/5e4910f0d9eb898a où Dianne Hackborn à partir de l'Android de l'équipe a répondu. Cependant, vous pouvez détecter indirectement par vérifier si la taille de la fenêtre a changé dans #onMeasure. Voir Android: Est un logiciel de clavier?.

7voto

Roger Keays Points 1158

Vous pouvez utiliser le résultat de rappel de showSoftInput () et de hideSoftInput () pour vérifier l'état du clavier. Détails complets et exemple de code sur

http://www.ninthavenue.com.au/how-to-check-if-the-software-keyboard-is-shown-in-android

6voto

cruskal Points 11

Vous pouvez vous référer à cette réponse - http://stackoverflow.com/a/24105062/3629912

Cela a fonctionné pour moi à chaque fois.

 adb shell dumpsys window InputMethod | grep "mHasSurface"
 

Il retournera vrai si le clavier logiciel est visible.

0voto

J'avais un problème similaire. Je devais réagir au bouton Entrée à l'écran (qui masquait le clavier). Dans ce cas, vous pouvez vous abonner à OnEditorAction de la vue texte avec laquelle le clavier a été ouvert - si vous avez plusieurs cases modifiables, abonnez-vous à toutes.

Dans votre activité, vous avez le plein contrôle du clavier, vous ne serez donc jamais confronté au problème, que le clavier soit ouvert ou non, si vous écoutez tous les événements d'ouverture et de fermeture.

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