How to hide Soft Keyboard when activity starts

AndroidAndroid Softkeyboard

Android Problem Overview


I have an Edittext with android:windowSoftInputMode="stateVisible" in Manifest. Now the keyboard will be shown when I start the activity. How to hide it? I cannot use android:windowSoftInputMode="stateHidden because when keyboard is visible then minimize the app and resume it the keyboard should be visible. I tried with

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

but it did not work.

Android Solutions


Solution 1 - Android

In the AndroidManifest.xml:

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateHidden"  />

or try

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)‌​;

Please check http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft">this</a> also

Solution 2 - Android

Use the following functions to show/hide the keyboard:

/**
 * Hides the soft keyboard
 */
public void hideSoftKeyboard() {
	if(getCurrentFocus()!=null) {
	    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
	    inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
	}
}

/**
 * Shows the soft keyboard
 */
public void showSoftKeyboard(View view) {
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    view.requestFocus();
    inputMethodManager.showSoftInput(view, 0);
}

Solution 3 - Android

Just add two attributes to the parent view of editText.

android:focusable="true"
android:focusableInTouchMode="true"

Solution 4 - Android

Put this in the manifest inside the Activity tag

  android:windowSoftInputMode="stateHidden"  

Solution 5 - Android

Try this:

<activity
    ...
    android:windowSoftInputMode="stateHidden|adjustResize"
    ...
>

Look at this one for more details.

Solution 6 - Android

To hide the softkeyboard at the time of New Activity start or onCreate(),onStart() etc. you can use the code below:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Solution 7 - Android

Using AndroidManifest.xml

<activity android:name=".YourActivityName"
      android:windowSoftInputMode="stateHidden"  
 />

Using Java

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

using the above solution keyboard hide but edittext from taking focus when activiy is created, but grab it when you touch them using:

add in your EditText

<EditText
android:focusable="false" />

also add listener of your EditText

youredittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    v.setFocusable(true);
    v.setFocusableInTouchMode(true);
    return false;
}});

Solution 8 - Android

Add the following text to your xml file.

<!--Dummy layout that gain focus -->
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:orientation="vertical" >
            </LinearLayout>

Solution 9 - Android

I hope this will work, I tried a lot of methods but this one worked for me in fragments. just put this line in onCreateview/init.

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Solution 10 - Android

add in your activity in manifasts this property

android:windowSoftInputMode="stateHidden" 

Solution 11 - Android

If you don't want to use xml, make a Kotlin Extension to hide keyboard

// In onResume, call this
myView.hideKeyboard()

fun View.hideKeyboard() {
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

Alternatives based on use case:

fun Fragment.hideKeyboard() {
    view?.let { activity?.hideKeyboard(it) }
}

fun Activity.hideKeyboard() {
    // Calls Context.hideKeyboard
    hideKeyboard(currentFocus ?: View(this))
}

fun Context.hideKeyboard(view: View) {
    view.hideKeyboard()
}
How to show soft keyboard
fun Context.showKeyboard() { // Or View.showKeyboard()
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.toggleSoftInput(SHOW_FORCED, HIDE_IMPLICIT_ONLY)
}

Simpler method when simultaneously requesting focus on an edittext

myEdittext.focus()

fun View.focus() {
    requestFocus()
    showKeyboard()
}
Bonus simplification:

Remove requirement for ever using getSystemService: Splitties Library

// Simplifies above solution to just
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)

Solution 12 - Android

Above answers are also correct. I just want to give a brief that there's two ways to hide the keyboard when starting the activity, from manifest.xml. eg:

<activity
..........
android:windowSoftInputMode="stateHidden"
..........
/>
  • The above way always hide it when entering the activity.

or

<activity
..........
android:windowSoftInputMode="stateUnchanged"
..........
/>
  • This one says don't change it (e.g. don't show it if it isn't already shown, but if it was open when entering the activity, leave it open).

Solution 13 - Android

Put this code your java file and pass the argument for object on edittext,

private void setHideSoftKeyboard(EditText editText){
	InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
	imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}

Solution 14 - Android

To hide the softkeyboard at the time of New Activity start or onCreate(),onStart() method etc. use the code below:

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);

To hide softkeyboard at the time of Button is click in activity:

View view = this.getCurrentFocus();
    
    if (view != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        assert imm != null;
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

Solution 15 - Android

Use SOFT_INPUT_STATE_ALWAYS_HIDDEN instead of SOFT_INPUT_STATE_HIDDEN

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Solution 16 - Android

You can set config on AndroidManifest.xml

Example:

<activity
	android:name="Activity"
	android:configChanges="orientation|keyboardHidden"
	android:theme="@*android:style/Theme.NoTitleBar"
	android:launchMode="singleTop"
	android:windowSoftInputMode="stateHidden"/>

Solution 17 - Android

Use the following code to Hide the softkeyboard first time when you start the Activity

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Solution 18 - Android

Try this one also

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
	public boolean onTouch(View v, MotionEvent event) {
		Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
		Ed_Cat_Search.onTouchEvent(event); // call native handler
		return true; // consume touch even
	}
});

Solution 19 - Android

This is what I did:

yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup
        yourEditText.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.onTouchEvent(event);   // handle the event first
                InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {

                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);  // hide the soft keyboard
                    yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext
                }
                return true;
            }
        });

Solution 20 - Android

If your application is targeting Android API Level 21 or more than there is a default method available.

editTextObj.setShowSoftInputOnFocus(false);

Make sure you have set below code in EditText XML tag.

<EditText  
    ....
    android:enabled="true"
    android:focusable="true" />

Solution 21 - Android

Try this.

First in your searchable xml the fields (name and hint etc) put @string and not literal strings.

Then method onCreateOptionsMenu, it must have a ComponentName object with your package name and your completed class name (with package name) - In case activity which has the SearchView component is the same as the show search results use getComponentName(), as the google android developer says.

I tried a lot of solutions and after much,much work this solution works for me.

Solution 22 - Android

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

this one worked for me

Solution 23 - Android

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

it will works

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAjuView Question on Stackoverflow
Solution 1 - AndroidNeenuView Answer on Stackoverflow
Solution 2 - AndroidSherif elKhatibView Answer on Stackoverflow
Solution 3 - AndroidmaniView Answer on Stackoverflow
Solution 4 - AndroidSaneeshView Answer on Stackoverflow
Solution 5 - AndroidAdnanView Answer on Stackoverflow
Solution 6 - AndroidRana Pratap SinghView Answer on Stackoverflow
Solution 7 - AndroidAtif AminView Answer on Stackoverflow
Solution 8 - AndroidHitsView Answer on Stackoverflow
Solution 9 - AndroidMubasharView Answer on Stackoverflow
Solution 10 - AndroidyousefView Answer on Stackoverflow
Solution 11 - AndroidGiboltView Answer on Stackoverflow
Solution 12 - AndroidSujeetView Answer on Stackoverflow
Solution 13 - AndroidNajib.NjView Answer on Stackoverflow
Solution 14 - AndroidAdamView Answer on Stackoverflow
Solution 15 - AndroidBrinda RathodView Answer on Stackoverflow
Solution 16 - AndroidLong NguyenView Answer on Stackoverflow
Solution 17 - AndroidGeeta GuptaView Answer on Stackoverflow
Solution 18 - Androidritesh4326View Answer on Stackoverflow
Solution 19 - Androidmangu23View Answer on Stackoverflow
Solution 20 - AndroidHarpreetView Answer on Stackoverflow
Solution 21 - AndroidtoktokwhoView Answer on Stackoverflow
Solution 22 - Androiduser3024334View Answer on Stackoverflow
Solution 23 - Androiduser8356857View Answer on Stackoverflow