我正在Android中创建一个简单的打字游戏。我从物理键盘输入输入没有问题,但现在我试图让软键盘在没有EditText的情况下出现。到目前为止,我已尝试过以下内容:
1。带有visibility =“不可见”的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%处显示了一个空的白色框,但不是键盘,但是当我现在运行时它什么也没做。
3。 onCreate()
中的另外两行:
InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
其中任何一个都没有运气。是否可以显示软键盘(然后使用onKeyUp
/ onKeyDown
)而不关注EditText?
现在,我能看到的唯一方法是创建我自己的软键盘实现(即从头开始构建)。不期待那样!
答案 0 :(得分:5)
以下代码适用于我:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
当我按下“菜单”按钮时,我在onKeyUp处理程序中使用此代码。
答案 1 :(得分:3)
您可以在EditText上设置visibility="invisible"
,而不是使用android:alpha="0"
。
所以你仍然需要一个EditText,但它不可见,你可以通过onKeyListener()
答案 2 :(得分:2)
您可以使用以下方式强制显示软键盘:
InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
答案 3 :(得分:2)
确保为视图启用软键盘:
setFocusable(true);
setFocusableInTouchMode(true);
然后致电:
InputMethodManager mgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);
答案 4 :(得分:1)
请注意,如果您在横向模式下工作,则软输入将创建自己的文本输入字段,从而破坏您的所有辛勤工作。您可以阻止此行为:
// This makes us remain invisible when in landscape mode.
setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
现在,如果您设置了一个不可见的EditText,它将保持原样。