Как спрятать клавиатуру?

По умолчанию изначально фокус автоматически устанавливается на первый EditText в активити, в результате чего появляется клавиатура. Избавиться от этого поведения помогает значение stateAlwaysHidden для атрибута манифеста windowSoftInputMode. Но, к сожалению, этот атрибут не срабатывает при последующей ручной установке фокуса.

Чтобы спрятать клавиатуру в процессе работы, придется воспользоваться сервисом InputMethodManager:

(InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE)


Для этого вызывается InputMethodManager.hideSoftInputFromWindow(). Он требует параметр windowToken, который можно достать из текущего View методом getWindowToken().

Второй параметр метода hideSoftInputFromWindow – флаг. Без флага (значение 0) метод сработает в любой ситуации. Если же передать флаг InputMethodManager.HIDE_IMPLICIT_ONLY, не скроется клавиатура, которую пользователь вызвал явно.

Чтобы клавиатура не появилась снова, кроме вызова hideSoftInputFromWindow необходимо снять с элемента фокус: getCurrentFocus().clearFocus().