V mojom rozložení mám EditText
a Button
.
Po napísaní textu do editačného poľa a kliknutí na tlačidlo Button
chcem skryť virtuálnu klávesnicu. Predpokladám, že ide o jednoduchý kus kódu, ale kde nájdem jeho príklad?
Systém Android môžete prinútiť, aby skryl virtuálnu klávesnicu pomocou InputMethodManager, pričom zavoláte hideSoftInputFromWindow
a odovzdáte token okna, v ktorom sa nachádza váš zameraný pohľad.
// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Týmto spôsobom sa klávesnica skryje vo všetkých situáciách. V niektorých prípadoch budete chcieť ako druhý parameter odovzdať InputMethodManager.HIDE_IMPLICIT_ONLY
, aby ste zabezpečili, že klávesnicu skryjete len vtedy, keď si ju používateľ explicitne nevynútil (podržaním menu).
Poznámka: Ak to chcete urobiť v jazyku Kotlin, použite:
context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
Syntax jazyka Kotlin
// Check if no view has focus:
val view = this.currentFocus
view?.let { v ->
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.hideSoftInputFromWindow(v.windowToken, 0)
}
Užitočné je aj skrytie softvérovej klávesnice:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
);
Toto sa dá použiť na potlačenie softvérovej klávesnice, kým sa používateľ skutočne nedotkne zobrazenia editText View.