ドメイン固有の入力用にソフトウェアキーボードをエミュレートしようとしています。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が追加されましたが、すでに親があります
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を作成する方法についてのポインタはありますか?他のモードレスウィジェットを使用したいと思います。