2013-03-14 4 views
6

Quelqu'un pourrait-il expliquer pourquoi le clavier virtuel apparaît et disparaît quand il le fait?Pourquoi le clavier logiciel Android s'affiche-t-il?

J'ai une mise en page avec un tas de contrôles différents, principalement des EditTexts et des boutons. Lorsque j'affiche cette page pour la première fois un EditText en haut de la mise en page a le focus et le clavier logiciel couvre les 45% inférieurs de l'écran

Je supposais que le clavier était présent parce que l'EditText avait le focus, donc je décidé de donner un bouton au bas de ma page l'accent plutôt via. . .

butDone.setFocusableInTouchMode(true); 
    bResult = butDone.requestFocus(); 

... juste après la setContentView(). Cela a fonctionné jusqu'à donner le focus du bouton. Le botton a eu le focus et le EditText n'a plus eu de focus MAIS le clavier était toujours là. Finalement, je me suis débarrassé du clavier via

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

mais clairement ma théorie sur le EditText ayant l'accent était erronée. Donc quelqu'un pourrait-il expliquer les "règles" sur ce qui fait apparaître le clavier quand c'est le cas, ou un lien vers ces règles? Merci d'avance!

Répondre

0

Par défaut, le premier EditText obtiendra le focus, si vous n'avez rien défini sur le focus dans le format XML de la mise en page.

Vérifiez this pour plus d'informations. Vous devriez utiliser cette solution si vous ne voulez pas que le clavier apparaisse au lieu de fermer le clavier.

+0

Donc, dites-vous que même si je donne le focus au bouton dans le code, il l'ignore parce que le focus n'est pas spécifié dans le XML? – user316117

+0

Non, je dis juste que c'est une meilleure solution de spécifier cela sur le XML plutôt que de laisser Android se concentrer sur le premier EditText par défaut, puis le modifier par programmation. – Edgar

Questions connexes