How to programmatically hide Android soft keyboard

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:

  1. 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.xml

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        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>

    chevron_right

    
    

  2. 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.java

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

Output:

Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.