我正在尝试为特定领域的输入模拟软件键盘。我正在使用 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 的任何指示?我愿意使用其他一些无模式的小部件。