How to programmatically hide Android soft keyboard

23 Feb, 2021
In this article, we will learn about how to hide soft keyboard programmatically. The keyboard generally hides but there are certain instances when it does not hide. So for better user experience, the keyboard is hidden programmatically.
Without using below approach, the default response of the app is shown below:-
Approach:
Now add the following code in the activity_main.xml file. The below code adds a textview, edittext and a button in activity_main. The button when clicked invokes the setText function in MainActivity class.activity_main.xmlactivity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:padding="16dp"    tools:context=".MainActivity">      <TextView        android:textStyle="bold"        android:textColor="#219806"        android:id="@+id/text_view_result"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:text="GeeksForGeeks"        android:textSize="22sp" />      <EditText        android:layout_marginTop="20dp"        android:id="@+id/edit_text_input"        android:layout_width="match_parent"        android:layout_height="wrap_content" />      <Button        android:layout_marginTop="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:onClick="setText"        android:text="Set Text" />  </LinearLayout>Now add the following code in the MainActivity.java file. Here we define the setText and closeKeyboard function. The setText function is invoked when the user clicks the button. It takes the input from edittext and replaces it in the textview. Then it calls the closeKeyboard function and clears the value of edittext. The closeKeyboard function hides the keyboard.MainActivity.javaMainActivity.javapackage org.geeksforgeeks.gfgHideKey      import android.content.Context;import android.os.Bundle;import android.view.View;import android.view.inputmethod    .InputMethodManager;import android.widget.EditText;import android.widget.TextView;  public class MainActivity    extends AppCompatActivity {    private TextView textViewResult;    private EditText editTextInput;      @Override    protected void onCreate(        Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          textViewResult            = findViewById(                R.id.text_view_result);        editTextInput            = findViewById(                R.id.edit_text_input);    }      public void setText(View v)    {        String newText            = editTextInput                  .getText()                  .toString();        textViewResult.setText(newText);          closeKeyboard();        editTextInput.setText("");    }      private void closeKeyboard()    {        // this will give us the view        // which is currently focus        // in this layout        View view = this.getCurrentFocus();          // if nothing is currently        // focus then this will protect        // the app from crash        if (view != null) {              // now assign the system            // service to InputMethodManager            InputMethodManager manager                = (InputMethodManager)                    getSystemService(                        Context.INPUT_METHOD_SERVICE);            manager                .hideSoftInputFromWindow(                    view.getWindowToken(), 0);        }    }}
Now add the following code in the activity_main.xml file. The below code adds a textview, edittext and a button in activity_main. The button when clicked invokes the setText function in MainActivity class.activity_main.xmlactivity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:padding="16dp"    tools:context=".MainActivity">      <TextView        android:textStyle="bold"        android:textColor="#219806"        android:id="@+id/text_view_result"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:text="GeeksForGeeks"        android:textSize="22sp" />      <EditText        android:layout_marginTop="20dp"        android:id="@+id/edit_text_input"        android:layout_width="match_parent"        android:layout_height="wrap_content" />      <Button        android:layout_marginTop="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:onClick="setText"        android:text="Set Text" />  </LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:padding="16dp"    tools:context=".MainActivity">      <TextView        android:textStyle="bold"        android:textColor="#219806"        android:id="@+id/text_view_result"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:text="GeeksForGeeks"        android:textSize="22sp" />      <EditText        android:layout_marginTop="20dp"        android:id="@+id/edit_text_input"        android:layout_width="match_parent"        android:layout_height="wrap_content" />      <Button        android:layout_marginTop="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:onClick="setText"        android:text="Set Text" />  </LinearLayout>
Now add the following code in the MainActivity.java file. Here we define the setText and closeKeyboard function. The setText function is invoked when the user clicks the button. It takes the input from edittext and replaces it in the textview. Then it calls the closeKeyboard function and clears the value of edittext. The closeKeyboard function hides the keyboard.MainActivity.javaMainActivity.javapackage org.geeksforgeeks.gfgHideKey      import android.content.Context;import android.os.Bundle;import android.view.View;import android.view.inputmethod    .InputMethodManager;import android.widget.EditText;import android.widget.TextView;  public class MainActivity    extends AppCompatActivity {    private TextView textViewResult;    private EditText editTextInput;      @Override    protected void onCreate(        Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          textViewResult            = findViewById(                R.id.text_view_result);        editTextInput            = findViewById(                R.id.edit_text_input);    }      public void setText(View v)    {        String newText            = editTextInput                  .getText()                  .toString();        textViewResult.setText(newText);          closeKeyboard();        editTextInput.setText("");    }      private void closeKeyboard()    {        // this will give us the view        // which is currently focus        // in this layout        View view = this.getCurrentFocus();          // if nothing is currently        // focus then this will protect        // the app from crash        if (view != null) {              // now assign the system            // service to InputMethodManager            InputMethodManager manager                = (InputMethodManager)                    getSystemService(                        Context.INPUT_METHOD_SERVICE);            manager                .hideSoftInputFromWindow(                    view.getWindowToken(), 0);        }    }}
MainActivity.java
package org.geeksforgeeks.gfgHideKey      import android.content.Context;import android.os.Bundle;import android.view.View;import android.view.inputmethod    .InputMethodManager;import android.widget.EditText;import android.widget.TextView;  public class MainActivity    extends AppCompatActivity {    private TextView textViewResult;    private EditText editTextInput;      @Override    protected void onCreate(        Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          textViewResult            = findViewById(                R.id.text_view_result);        editTextInput            = findViewById(                R.id.edit_text_input);    }      public void setText(View v)    {        String newText            = editTextInput                  .getText()                  .toString();        textViewResult.setText(newText);          closeKeyboard();        editTextInput.setText("");    }      private void closeKeyboard()    {        // this will give us the view        // which is currently focus        // in this layout        View view = this.getCurrentFocus();          // if nothing is currently        // focus then this will protect        // the app from crash        if (view != null) {              // now assign the system            // service to InputMethodManager            InputMethodManager manager                = (InputMethodManager)                    getSystemService(                        Context.INPUT_METHOD_SERVICE);            manager                .hideSoftInputFromWindow(                    view.getWindowToken(), 0);        }    }}
Output:
Android-Misc
Android
Java
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.