2010-05-09 21 views
8

Je développe sur le Droid Incredible (et j'ai testé sur un émulateur 1.5 AVD ainsi), et l'un des onglets dans mon widget de tabulation se compose d'un listview et une ligne avec un EditText et un Bouton Envoyer (pour une fonction de discussion). J'utilise ce qui suit pour fermer le clavier logiciel une fois que je clique sur Envoyer, mais cela ne fonctionne pas. C'est identique au code que j'ai trouvé ailleurs que les gens ont upvoted comme correct.Masquer Soft Keyboard ne fonctionne pas

Vous voyez quelque chose qui me manque? J'ai également essayé de changer le drapeau à 0. Pas de chance. Quelqu'un sait quoi de neuf?

**** EDIT **** Je viens de réaliser que j'utilisais initialement hideSoftInputFromInputMethod() au lieu de hideSoftInputFromWindow(). Le changer ne l'a pas fait fonctionner cependant ...

Répondre

20

Changer HIDE_IMPLICIT_ONLY à 0 l'a fait (après que je l'ai changé à hideSoftInputFromWindow() de hideSoftInputFromInputMethod()).

Cependant je ne suis pas sûr pourquoi HIDE_IMPLICIT_ONLY ne fonctionne pas puisque je n'ouvre pas le clavier explicitement avec un appui long sur le Menu.

+0

Si vous montrerez clavier avec le drapeau 'SHOW_FORCED'then il indique que l'utilisateur a forcé la méthode d'entrée ouverte (par exemple par le menu à long pression) il ne doit pas être fermé jusqu'à ce qu'ils font explicitement. [Voir Documentation] (http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#SHOW_FORCED) –

+0

Si vous avez le clavier affiché ** Forced ** et que vous souhaitez masquer, utilisez le code suivant: InputMethodManager imm = (InputMethodManager) mContext.getSystemService (Contexte.INPUT_METHOD_SERVICE); \t \t imm.hideSoftInputFromWindow (mEditText.getWindowToken(), 0); ' –

11

Une autre option pour l'empêcher de l'activité dans AndroidManifest.xml fichier

android: windowSoftInputMode = « stateAlwaysHidden » - Cette méthode permet d'éviter le chargement/montrant clavier lorsque l'activité est chargée. Mais quand vous cliquez sur le composant éditable comme edittext le clavier s'ouvrira. parfait pour mon exigence.

<activity 
      android:name=".Name" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateAlwaysHidden"> 
+0

Cela fonctionne lorsque le clavier ne meurt jamais en quelque sorte. bon. – beginners

5

1.Premièrement lier votre jeton d'édition de texte avec le clavier et ouvert
// ici à savoir inputMethodManager.showSoftInput(_edittext, 0); _edittext est une instance de vue

2.keyboard va se cache automatiquement si le texte d'édition est masqué à l'écran

3.Le texte de modification est toujours à l'écran mais vous souhaitez masquer le clavier, puis utilisez le code imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); // t son ne fonctionnera pas si edittext n'est pas sur l'écran ou n'est pas focalisé.

+1

Ceci est la meilleure réponse jamais !!! Expliqué le mystère derrière toute dissimulation de clavier – ulusoyca