我可以在没有 EditText 的情况下使用软键盘吗?
我正在 Android 中创建一个简单的打字游戏。我从物理键盘获取输入没有问题,但现在我试图让软键盘在没有 EditText 的情况下显示。到目前为止,我已经尝试了以下操作:
1. EditText withvisibility="invisible" 和这一行:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(keyboard_edittext, InputMethodManager.SHOW_FORCED); // SHOW_IMPLICIT also failed
2. onCreate()< 中的这一行/code>:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
此方法实际上在屏幕底部 10% 的位置显示了一个空的白色框,但没有在键盘上显示,尽管当我现在运行它时它什么也不做。
3. onCreate()
中的另外两行:
InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
这些都没有运气。是否可以在不关注 EditText 的情况下显示软键盘(然后使用 onKeyUp
/onKeyDown
)?
现在,我能看到的唯一方法是创建我自己的软键盘实现(即从头开始构建它)。不期待那个!
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!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
以下代码适用于我:
当我按下“菜单”按钮时,我在 onKeyUp 处理程序中使用此代码。
The following code works for me:
I use this code in a onKeyUp handler when I press the "menu" button.
您可以在 EditText 上设置
android:alpha="0"
,而不是使用visibility="invisible"
。因此,您仍然需要一个 EditText,但它不可见,您可以通过
onKeyListener()
从软键盘获取输入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 an
onKeyListener()
您可以使用以下命令强制显示软键盘:
You can force the Softkeyboard to be shown by using:
确保为您的视图启用软键盘:
然后调用:
Make sure to enable the soft keyboard for your view:
Then call:
请注意,如果您在横向模式下工作,软输入将创建自己的文本输入字段,从而破坏您的所有辛苦工作。您可以防止这种行为:
现在,如果您设置了一个不可见的 EditText,它将保持原样。
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.