Ich habe eine Anwendung und muss die Softkeyboard auf eine ziemlich große Menge an Aktionen schließen. Wenn zum Beispiel eine Schaltfläche klicken, wenn ein neues Layout gezogen wird, auf Änderung der Bildschirmausrichtung, wenn die Controller sagt die Benutzeroberfläche, et cetera. Ich verwende den OptionsMenuButton, um die Ansicht mit einem ViewFlipper zu spiegeln, und natürlich möchte ich, dass die Tastatur in der umgedrehten Ansicht versteckt ist (dort gibt es kein Eingabefeld).Softkeyboard zuverlässig verdecken
Ich habe diese versucht, so weit und sagen, warum diese nicht zuverlässig sind:
Dieses hat nicht funktioniert, weil ich eine Menge editTexts haben, und andere Ansichten. Ich brauche eine allgemeinere, die, wenn möglich, keine Sicht als Argument erfordert.
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Dieses funktioniert nicht überhaupt für mich:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Dieser funktioniert, aber sofort erscheint die Tastatur wieder, wenn die Ansicht gekippt wird.
Dieser funktioniert manchmal, aber getCurrentFocus() gibt die meiste Zeit null zurück.
InputMethodManager inputManager = (InputMethodManager)
Context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
Dieser funktioniert nur, wenn die Tastatur angezeigt wird:
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
Dieses funktioniert nicht mit dem EditText wie das erste Stück Code, aber mit der Wurzel-Layout, die auf Orientierungsänderung ändert und jedes Mal, wenn das Oncreate aufgerufen wird. Ich habe verschiedene Layout-XML für Querformat/Hochformat und Normal/Groß. Alle Root-Layouts haben die ID root
. Das klappt beim ersten Mal gut, aber danach funktioniert es nicht mehr.
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(findViewById(R.id.root).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Bottomline: Ich habe versucht, hella viele Softkeyboard Versteck Methoden, aber keiner von ihnen scheint zuverlässig zu arbeiten. Gibt es irgendwelche Methode zum Verstecken der Soft-Tastatur zuverlässig?
Nach einigen Tests scheint dies die zuverlässigste Methode zu sein. – stealthjong
Können Sie ein Codebeispiel senden? Wo sollte ich Toolkit.getEditText setzen ((ViewParent) findViewById (android.R.id.content)). getChildAt (0)); ? – eyal
Heirate mich !! Ich war so lange auf der Suche nach einer guten Lösung. Scheint, ich fand eine nette (und kurze). Vielen Dank! –