How do you close/hide the Android soft keyboard using Java?

Vidar Vestnes picture Vidar Vestnes · Jul 10, 2009 · Viewed 1.6M times · Source

I have an EditText and a Button in my layout.

After writing in the edit field and clicking on the Button, I want to hide the virtual keyboard when touching outside the keyboard. I assume that this is a simple piece of code, but where can I find an example of it?

Answer

Reto Meier picture Reto Meier · Jul 10, 2009

You can force Android to hide the virtual keyboard using the InputMethodManager, calling hideSoftInputFromWindow, passing in the token of the window containing your focused view.

// 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);
}

This will force the keyboard to be hidden in all situations. In some cases, you will want to pass in InputMethodManager.HIDE_IMPLICIT_ONLY as the second parameter to ensure you only hide the keyboard when the user didn't explicitly force it to appear (by holding down the menu).

Note: If you want to do this in Kotlin, use: context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager

Kotlin Syntax

// 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)
}