I'm creating a simple typing game in Android. I have no problem getting input from the physical keyboard, but now I'm trying to get the soft keyboard to appear without the EditText. So far, I've tried the following:
1. EditText with visibility="invisible" and this line:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(keyboard_edittext, InputMethodManager.SHOW_FORCED); // SHOW_IMPLICIT also failed
2. This line in the onCreate()
:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
This method actually displayed an empty white box across the bottom 10% of the screen but not the keyboard, although when I run it now it does nothing.
3. Another two lines in the onCreate()
:
InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
No luck on any of these. Is it even possible to display the soft keyboard (and then use onKeyUp
/onKeyDown
) without focusing on an EditText?
Right now, the only way I can see is to approach this is to create my own implementation of the soft keyboard (i.e. build it from scratch). Not looking forward to that!
You can force the Softkeyboard to be shown by using:
Make sure to enable the soft keyboard for your view:
Then call:
Note that if you are working in landscape mode, the soft input will create its own text input field ruining all your hard work. You can prevent this behavior:
Now if you have set up an invisible EditText it will remain as you made it.
Instead of using
visibility="invisible"
you can setandroid:alpha="0"
on your EditText. So you still need a EditText but it is not visible and you can get the input from the softkeyboard by anonKeyListener()
The following code works for me:
I use this code in a onKeyUp handler when I press the "menu" button.