Reputation: 21808
I'm new to Android. I've spent two hours already for searching. Whatever i try softkeyboard is never shown for my EditText
. I create it simply:
EditText editText = (EditText)findViewById(R.id.editText);
I tried:
editText.requestFocus();//i tried without this line too
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
and:
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus)
{
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
});
i also tried:
getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
i tried putting this line into AndroidManifest.xml
file:
android:windowSoftInputMode="stateVisible|adjustResize"
but all in vain. It just never shows. What am i missing?
Upvotes: 88
Views: 52413
Reputation: 429
The method for enabling the on-screen soft keyboard for Android Studio 2+ Emulators depends on the API level of the emulator. I have tested the various methods starting with API 15 and have recorded the steps below.
[A] APIs 15, 17, 19 and 21.
The following steps will enabled the on-screen soft keyboard but will disable the ability to enter text and interact with the AVD using the hardware computer keyboard.
[B] API 22
The soft keyboard is displayed no matter what you do with the hardware keyboard settings. If you wish to enable hardware keyboard support alongside the soft keyboard then,
[C] API 23
If you wish to use the hardware and soft keyboard then...
If you don't need the hardware keyboard, in AVD advanced settings, uncheck the "Enable keyboard input" option. You won't need to change any settings on the virtual device.
[D] APIs 24 and 25
If the Enable keyboard input option was selected in the AVD then you will now be able to use both hard and soft keyboard inputs. If you unchecked the option in the AVD the soft keyboard will be displayed regardless.
[E] API 26
Exactly the same as [D] APIs 24 and 25 except you need to navigate through an additional "System" menu level in the device settings before you get to Language and input / Physical Keyboard
Upvotes: 3
Reputation: 4283
There are two places to deselect hardware keyboard in AS 1.1.0. This one isn't sufficient:
Must do this (click Tools | Android | AVD Manager
; then create new or edit old AVD and then click Show Advanced Settings
; scroll down and clear Enable keyboard input
):
Upvotes: 3
Reputation: 18978
You need to make sure that your emulator is not set to use a hardware keyboard. This can be done by choosing Edit
on a selected emulator in the AVD. Then uncheck the Hardware keyboard present
setting.
You could also try using a different emulator, such as Genymotion. It supports full hardware acceleration (multi-core CPU as well as GPU) and runs much faster than any of the android emulator images. If you use Genymotion you will need to disable the hardware keyboard within Android (see below for details).
To disable hardware keyboard in Genymotion:
Go to Settings
-> Language & input
and open the Default
item under Keyboard & Input Methods
. There is a Hardware
setting that you can toggle on/off. When it is on you use your physical keyboard and when it is off the standard soft keyboard should pop-up whenever a text field gets focus.
Screenshots for Genymotion settings:
Upvotes: 213
Reputation: 1488
In version 2.1.1 - click on your virtual device settings - then select "use virtual keyboard for typing" checkbox.
Upvotes: 73
Reputation: 370
To show:
EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
And to hide:
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
Just try this one....
Upvotes: 1
Reputation: 33238
May be your emulator doesn't support softkeyboard..
Add a hardware property Keyboard support and set it to true for your emulator.
If it is already true then Check this answer.
Upvotes: 1