Skip to content

Hide Soft keyboard android code in Kotlin | programmatically?

  • by

Hiding a Soft keyboard in the 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.

Hide Soft keyboard android code in Kotlin

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:-

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.

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

<?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 :

Hide Soft keyboard android

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:

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

Leave a Reply

Your email address will not be published. Required fields are marked *