无法使用PopupWindow单击键盘

时间:2012-06-08 23:11:41

标签: android android-softkeyboard popupwindow

我动态创建的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关闭。 如何让键盘工作?

2 个答案:

答案 0 :(得分:2)

您可以使用PopupWindow方法完成所有操作。

  1. 您不需要InputMethodManager强制使用软键盘 显示。

    // Shows soft keyboard if it is not already visible.
    popup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    
  2. 然后,您需要允许键盘交互。

    // Allows interaction with the soft keyboard.
    popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
    
  3. 此外,您无需更改可聚焦性以更改外部触摸行为。

    // PopupWindow ignores outside touches.
    popup.setOutsideTouchable(false);
    

答案 1 :(得分:0)

我怀疑如果你将setFocusable设置为false,那么正在发生的事情是键盘已经启动,因为你强迫它,但它实际上并没有与那个字段交谈。你应该让你的弹出字段成为一个主题为Dialog的活动...它将产生相同的效果,你不需要搞焦点。