Working with the Soft Keyboard - kmolo/android_guides GitHub Wiki
The Android system shows an on-screen keyboard, known as a soft input method, when a text field in your UI receives focus. To provide the best user experience, you can specify characteristics about the type of input you expect (such as whether it's a phone number or email address) and how the input method should behave (such as whether it performs auto-correct for spelling mistakes).
Note: By default, the soft keyboard may not appear on the emulator. If you want to test with the soft keyboard, be sure to open up AVD (Window => Android Virtual Device Manager) and set "Hardware Keyboard Present" to false for your emulator. See this screenshot for a visual reference.
The following code will reveal the soft keyboard focused on a specified view:
public void showSoftKeyboard(View view){
if(view.requestFocus()){
InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
}
}
You can force Android to hide the virtual keyboard using the InputMethodManager, calling hideSoftInputFromWindow, passing in the token of the window containing your edit field.
public void hideSoftKeyboard(View view){
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
This will force the keyboard to be hidden in all situations.
In the keyboard, you can hide the "Next" key and add "Done" instead by adding the following to the imeOptions
for the EditText view:
<EditText
android:imeOptions="actionDone">
</EditText>
or in Java:
myEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
See the EditText documentation for a more detailed look at imeOptions
.
Although Android gives focus to the first text field in your layout when the activity starts, it does not show the soft keyboard. To show the keyboard when your activity starts, add the android:windowSoftInputMode attribute to the <activity>
element with the "stateVisible"
value within the Android manifest. Check out this guide for more details.
<activity
android:name="com.example.myactivity"
android:windowSoftInputMode="stateVisible" />
We can also use this to change the way that the soft keyboard displaces the view when it appears as well with:
<activity
android:name="com.example.myactivity"
android:windowSoftInputMode="stateVisible|adjustResize" />
See the guide on keyboard visibility for more details.