Android 无模式弹出窗口作为键盘
我正在尝试为特定于域的输入模拟软件键盘。我正在使用一个弹出窗口来收集输入并将其传输到底层的EditText。不幸的是,PopupWindow是模态的,因此用户不能像通常的软件键盘那样从一个EditText切换到另一个EditText。我已经研究过设置标志\u NOT\u TOUCH\u MODAL标志,但是我不确定什么时候或者应该应用什么来获得我想要的行为 我启动PopupWindow的代码如下所示:Android 无模式弹出窗口作为键盘,android,modal-dialog,modeless,Android,Modal Dialog,Modeless,我正在尝试为特定于域的输入模拟软件键盘。我正在使用一个弹出窗口来收集输入并将其传输到底层的EditText。不幸的是,PopupWindow是模态的,因此用户不能像通常的软件键盘那样从一个EditText切换到另一个EditText。我已经研究过设置标志\u NOT\u TOUCH\u MODAL标志,但是我不确定什么时候或者应该应用什么来获得我想要的行为 我启动PopupWindow的代码如下所示: myEdit.setOnClickListener(new View.OnClickListe
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正在添加,但它已具有父级
我也在研究setOutsideTouchable,但到目前为止,我还没有取得任何进展
有没有关于如何创建无模式弹出窗口的建议?我愿意使用其他一些非模态的小部件。弹出窗口对于您试图做的事情来说似乎有点沉重,当您发现您必须与它斗争才能做您想要的事情时。为什么不将键盘实现为视图,并将其粘贴到布局中,然后隐藏/显示它?设计美学要求软件键盘的行为与内置键盘类似。我考虑过隐藏/显示,如果我找不到任何有效的方法,那就是我必须要做的。鉴于android键盘是非模态的,我宁愿先采用这种方式。你有没有找到解决方案?谢谢。我最终选择了一个稍微不同的方法。这一问题讨论了这一办法:
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);
}
});