Ho un'applicazione e devo chiudere il pannello di controllo su una quantità piuttosto grande di azioni. Ad esempio, quando clic su un pulsante, quando un nuovo layout è disegnato, su schermo di modifica dell'orientamento, quando il controllore dice utente per, eccetera. Uso le opzioni MenuMenu per capovolgere la vista con ViewFlipper, e ovviamente voglio nascondere la tastiera nella vista ruotata (non ci sono campi di input lì).Nascondere in modo affidabile il softkey
ho provato questi finora e dica perché questi non sono affidabili:
Questo non ha funzionato perché ho un sacco di editTexts, e altri punti di vista. Ho bisogno di uno più generico, uno che non richiede una vista come argomento, se possibile.
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Questo non funziona affatto per me:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Questo funziona, ma si apre subito la tastiera di nuovo quando la vista è capovolto.
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
Questo funziona a volte, ma getCurrentFocus() restituisce null la maggior parte del tempo.
InputMethodManager inputManager = (InputMethodManager)
Context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
Questo funziona solo se la tastiera è indicato:
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
Questo non funziona con l'EditText come il primo pezzo di codice, ma con la layout radice, che cambia variazione dell'orientamento e ogni volta che viene chiamato oncreate. Ho un layout XML diverso per orizzontale/verticale e normale/grande. Tutti i layout radice hanno l'ID root
. Funziona bene la prima volta, ma dopo non funziona più.
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(findViewById(R.id.root).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Bottomline: Ho provato Hella sacco di metodi nascondigli SoftKeyboard, ma nessuno di loro sembra funzionare in modo affidabile. Esiste un metodo per nascondere la tastiera virtuale in modo affidabile?
Dopo alcuni test, questo sembra essere il metodo più affidabile. – stealthjong
Puoi inviare un esempio di codice? dove dovrei mettere Toolkit.getEditText (((ViewParent) findViewById (android.R.id.content)). getChildAt (0)); ? – eyal
Sposami !! Stavo cercando una buona soluzione per così tanto tempo. Sembra che ne abbia trovato uno bello (e breve). Grazie! –