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が追加されましたが、すでに親があります

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 は、あなたがやろうとしていることに対して少し重いように思えます。キーボードを として実装Viewし、レイアウトに貼り付けてから、非表示/表示しないのはなぜですか?

于 2012-04-24T03:53:33.743 に答える