At times When app screen starts, we may need to show Soft keyboard Popup for the EditText, which is having focus. So user don’t need to touch on the EditText to show keyboard.
To show keyboard for EditText view when Activity starts. We can just implement in XML design file in EditText
tag by using <requestFocus />
. see below
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLength="15">
<requestFocus/>
</EditText>
But the above XML code not works when using in Fragment, to show keyboard when Fragment screen starts.
Solution to show soft keyboard
We need to handle in code to force show keyboard. Following code works fine..
/**
* TODO showInputMethod
*/
public void showInputMethod() {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
}
Call this method in Fragment OnCreateView(…). Now It will show the softkeyboard.
And You can hide the Softkeyboard, when user touched on any other place than the EditText in Activity screen, using following code (place this code in Activity)
/* (non-Javadoc) * @see android.app.Activity#dispatchTouchEvent(android.view.MotionEvent) */ @Override public boolean dispatchTouchEvent(MotionEvent event) { View v = getCurrentFocus(); boolean ret = super.dispatchTouchEvent(event); if (this instanceof SkylineMessagesActivityAdv) { return false; } if (v instanceof EditText) { View w = getCurrentFocus(); int scrCoords[] = new int[2]; w.getLocationOnScreen(scrCoords); float x = event.getRawX() + w.getLeft() - scrCoords[0]; float y = event.getRawY() + w.getTop() - scrCoords[1]; if (event.getAction() == MotionEvent.ACTION_UP && (x < w.getLeft() || x >= w.getRight() || y < w.getTop() || y > w.getBottom())) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); } } return ret; }
Hope it helps somebody..
Cheers 🙂
You may be also interested in
- HTML Tags Supported By TextView, Android
- Apply ColorStateList for TextView
- Validation using default feature of EditText
- EditText, Keyboard is filling the entire screen when Landscape Orientation
- How to make EditText not editable but scrollable
6 thoughts on “Show soft keyboard for EditText when Fragment starts”
thank you for this…
Thanks mate, this was just what I was looking for.
It works fine but how to close this .. I have tried all the solution . In my scenario I start a fragment and show the keyboard and press the home button .. my app goes in background but keyboard still there on tab/phone screen .. it seems weird cause when app is closed or in background why keyboard is not closing or hiding , I was trying to write some code on pause of fragment but did not help.
Hi Him,
I edited above post and given code to hide softkeyboard. Please try it. It may work for you.
Thanks.
Thank you man!! Humanity just got better because of you! Keep that line!
Thank you, dude… This is what I need