0

我正在尝试为特定领域的输入模拟软件键盘。我正在使用 PopupWindow 来收集输入并将其传输到底层的 EditText。不幸的是,PopupWindow 是模态的,因此用户不能像使用通常的软件键盘那样从一个 EditText 切换到另一个 EditText。我已经研究过设置FLAG_NOT_TOUCH_MODAL标志,但我不确定应该何时或应用什么来获得我正在寻找的行为。

我启动 PopupWindow 的代码如下所示:

myEdit.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
      pw = myKeyboard.getPopupWindow((EditText) v);

      pw.showAtLocation(Main.this.findViewById(R.id.main), Gravity.BOTTOM, 0, 0);
   }
});

我尝试将其更改为以下内容,但这只会导致运行时异常:java.lang.RuntimeException: view android.widget.LinearLayout@40526268 being added, but it already has a parent

myEdit.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
      pw = myKeyboard.getPopupWindow((EditText) v);

      WindowManager.LayoutParams wlp = getWindow().getAttributes();
      wlp.gravity = Gravity.BOTTOM;
      wlp.flags = wlp.flags | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
      getWindow().addContentView(pw.getContentView(), wlp);

      pw.showAtLocation(Main.this.findViewById(R.id.main), Gravity.BOTTOM, 0, 0);
  }
});

我也在研究 setOutsideTouchable,但到目前为止我还没有得到任何结果。

关于如何创建无模式 PopupWindow 的任何指示?我愿意使用其他一些无模式的小部件。

4

1 回答 1

0

PopupWindow 对于您想要做的事情似乎有点沉重,并且当您发现您必须与它作斗争才能做您想做的事情时。为什么不将您的键盘实现为 aView并将其粘贴在您的布局中,然后隐藏/显示它?

于 2012-04-24T03:53:33.743 回答