Hiding a Soft keyboard in Android app is easy, just press the back button of the Android phone. But in some situations, it does not work, as a full-screen Activity.

So How to Hide Soft keyboard android?
Let’s assume, we have an EditText
and a Button
in my layout. After click and writing in the edit field then clicking on the Button
, we want to hide the virtual keyboard.
You can use Android with the following statement: Keyboard.hide()
. That it but Android has a problem. You must use the InputMethodManager
to hide the keyboard.
This is Android’s API to the keyboard. BUT! You are required to have a Context
in order to get access to the IMM. Now we have a problem. I may want to hide the keyboard from a static or utility class that has no use or need for any Context
. or And FAR worse, the IMM requires that you specify what View
(or even worse, what Window
) you want to hide the keyboard FROM.
This is what makes hiding the keyboard so challenging. Let’s do Close/hide the Android Soft Keyboard android application.
The main code in kotlin:-
1 2 |
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager imm?.hideSoftInputFromWindow(v.windowToken, 0) |
Let’s see the step by step coding:-
Step 1. Create a new project “Build Your First Android App in Kotlin“
Step 2. Open the “MainActivity.kt” and add the following code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package com.eyehunts.androidsoftkeyboardhideshow import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import android.content.Context import android.view.inputmethod.InputMethodManager class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener {v -> val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager imm?.hideSoftInputFromWindow(v.windowToken, 0) } } } |
Step 3. Add EditText and Button in resources layout “activity_main.xml“
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical" android:gravity="center_horizontal"> <EditText android:id="@+id/editText" android:layout_width="223dp" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:hint="Type!" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hide" android:layout_marginTop="50dp"/> </LinearLayout> |
Step 4. Now Run the application, in an emulator or on your Android device.
Output screenshot Android Keyboard hide app example :
Download source code Hide Soft keyboard android code in Kotlin
https://github.com/EyeHunts/AndroidSoftKeyboardhideshow
Note: Clear focus to avoid showing keyboard again if you open the app from the background
Add this line to the end of the method:
1 |
view.clearFocus(); |
Source: https://stackoverflow.com/
Do comment if you have any doubts and suggestions on this tutorial.
Note: This example (Project) is developed in Android Studio 3.3.2. Tested on Android 9 ( Android-P), compile SDK version API 28: Android 9.0 (Pie)
MinSdkVersion=”15″
TargetSdkVersion=”28″
Coding in Kotlin