-
Notifications
You must be signed in to change notification settings - Fork 6.3k
Working with the Soft Keyboard
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).
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 the Android Virtual Device Manager (Tools => Android => AVD Manager
) and uncheck "Enable Keyboard Input" for your emulator.
Now restart the emulator. See these screenshots for a visual reference.
If you are using Genymotion, you need to click on the gear icon on the emulator image and check Use virtual keyboard for text input
before starting the emulator.
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.
Created by CodePath with much help from the community. Contributed content licensed under cc-wiki with attribution required. You are free to remix and reuse, as long as you attribute and use a similar license.
Finding these guides helpful?
We need help from the broader community to improve these guides, add new topics and keep the topics up-to-date. See our contribution guidelines here and our topic issues list for great ways to help out.
Check these same guides through our standalone viewer for a better browsing experience and an improved search. Follow us on twitter @codepath for access to more useful Android development resources.