我可以使用没有EditText的软键盘吗?

我正在用Android创build一个简单的打字游戏。 我没有问题从物理键盘input,但现在我试图让软键盘出现没有EditText。 到目前为止,我已经尝试了以下内容:

1.可见性=“不可见”的EditText和这一行:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(keyboard_edittext, InputMethodManager.SHOW_FORCED); // SHOW_IMPLICIT also failed 

2. onCreate()中的这一行:

 this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

这个方法实际上在屏幕的底部10%显示了一个空的白色框,但不是键盘,尽pipe现在我运行它时什么都不做。

3. onCreate()中的另外两行:

 InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT); 

没有运气在任何这些。 是否甚至可以显示软键盘(然后使用onKeyUp / onKeyDown )而不关注EditText?

现在,我能看到的唯一方法就是创build我自己的软键盘实现(即从头构build)。 不期待!

以下代码适用于我:

  InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 

当我按下“菜单”button时,我在onKeyUp处理程序中使用此代码。

而不是使用visibility="invisible"你可以在你的EditText上设置android:alpha="0" 。 所以你仍然需要一个EditText,但它是不可见的,你可以通过onKeyListener()来获得软键盘的input。

您可以使用以下方法强制Softkeyboard显示:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

确保为您的视图启用软键盘:

 setFocusable(true); setFocusableInTouchMode(true); 

然后打电话:

 InputMethodManager mgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT); 

请注意,如果您在横向模式下工作,软input会创build自己的文本input字段,破坏您的所有努力工作。 你可以防止这种行为:

 // This makes us remain invisible when in landscape mode. setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); 

现在,如果你已经设置了一个不可见的EditText,它将保持你所做的。