2012-04-23 5 views
0

私はドメイン固有の入力用のソフトウェアキーボードをエミュレートしようとしています。私はPopupWindowを使って入力を集め、それを基礎となるEditTextに転送します。残念なことに、PopupWindowはモーダルなので、ユーザーは通常のソフトウェアキーボードでできるように、あるEditTextから別のEditTextに切り替えることはできません。私はFLAG_NOT_TOUCH_MODALフラグを調べましたが、私が探している振る舞いを得るためにはいつ、どのように適用するべきか分かりません。モードレスPopupWindowをキーボード

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:android.widget.LinearLayoutを見ます@ 40526268を追加しましたが、それはすでに私もsetOutsideTouchableに探していた親

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); 
    } 
}); 

を持っていますが、これまでのところ、私はどこにももらっていないされています。

どのように私はモードレスPopupWindowを作成することができます上の任意のポインター?他のモードレスウィジェットを使っても構わないと思う。

+0

解決方法を見つけましたか?ありがとう。 –

+0

少し違ったアプローチで行きました。そのアプローチはこの質問で議論されました:http://stackoverflow.com/questions/10309927/update-views-in-one-activity-from-another –

答えて

0

PopupWindowは、あなたがやろうとしていることで少し重いようですが、あなたが探しているように、あなたはあなたが望むことをするためにそれと戦わなければなりません。ちょうどあなたのキーボードをViewとして実装し、それをあなたのレイアウトに貼りつけて隠す/表示するのはなぜですか?

+0

デザインの美学は、ソフトウェアキーボードが組み込みのものと並行して動作するように指示しますキーボード。私はhide/showと考えていましたが、何も見つからなければ、それは私がしなければならないことです。アンドロイドキーボードがモードレスであることを考えると、私はむしろそのルートを最初に追求するだろう。 –

関連する問題