我动态创建的PopupWindow包含带有属性的EditText:
popup.setTouchable(true);
popup.setFocusable(false);
用强制键盘显示:
InputMethodManager inputMgr = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
inputMgr.showSoftInput(root, InputMethodManager.SHOW_IMPLICIT);
显示键盘,但没有从键盘接收任何输入(即,按键不会向文本编辑器添加文本),并且选择了文本编辑器,因为我可以看到光标闪烁。
我将setFocusable设置为false,因为当我点击它之外我不想让PopupWindow关闭。 如何让键盘工作?
答案 0 :(得分:2)
您可以使用PopupWindow
方法完成所有操作。
您不需要InputMethodManager
强制使用软键盘
显示。
// Shows soft keyboard if it is not already visible.
popup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
然后,您需要允许键盘交互。
// Allows interaction with the soft keyboard.
popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
此外,您无需更改可聚焦性以更改外部触摸行为。
// PopupWindow ignores outside touches.
popup.setOutsideTouchable(false);
答案 1 :(得分:0)
我怀疑如果你将setFocusable设置为false,那么正在发生的事情是键盘已经启动,因为你强迫它,但它实际上并没有与那个字段交谈。你应该让你的弹出字段成为一个主题为Dialog的活动...它将产生相同的效果,你不需要搞焦点。