18

我正在 Android 中创建一个简单的打字游戏。我从物理键盘获取输入没有问题,但现在我试图让软键盘在没有 EditText 的情况下出现。到目前为止,我已经尝试了以下方法:

1. EditText 与 visibility="invisible" 和这一行:

((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% 处显示了一个空白框,但没有在键盘上显示,尽管当我现在运行它时它什么也没做。

3.中的另外两行onCreate()

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

这些都没有运气。甚至可以在不关注 EditText 的情况下显示软键盘(然后使用onKeyUp/ )吗?onKeyDown

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

4

5 回答 5

5

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

于 2012-11-26T08:06:24.660 回答
5

以下代码适用于我:

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

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

于 2011-08-05T09:46:18.300 回答
2

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

setFocusable(true);
setFocusableInTouchMode(true);

然后调用:

InputMethodManager mgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);
于 2012-02-11T00:58:28.323 回答
2

您可以使用以下命令强制显示软键盘:


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

于 2011-01-02T17:52:21.943 回答
1

请注意,如果您在横向模式下工作,软输入将创建自己的文本输入字段,破坏您所有的辛勤工作。您可以防止这种行为:

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

现在,如果您设置了一个不可见的 EditText,它将保持原样。

于 2013-04-12T23:39:27.610 回答