2012-03-01 13 views
1

フォーカスを設定できるPopupWindowのキーイベントを基になるアクティビティにディスパッチする方法を教えてください。 ウィンドウをフォーカス可能に設定すると、すべてのイベントが消費されます。私は鍵を傍受し、 イベントを処理できるようにしたい。PopupWindow、ディスパッチキーイベント

私のジレンマは次のとおりです。 私のPopupWindowにはEditTextが含まれているため、ウィンドウのキーボードのオンタップを表示するために、ウィンドウにフォーカスを設定する必要があります。問題は、フォーカスのために、私はキーイベント(この場合はメニューボタン)を傍受してウィンドウを閉じることができないということです。

答えて

1

イベントのみにフォーカスを当てたビューのみを処理できます。

私のCustomPopUpの使用を試みることができます。

ここでの動作:EditTextをクリックすると、何かを入力してからCustomPopUpを開き、入力を続けると、EditTextに入力されます。したがって、あなたがCustomPopUpを開くときでも、以前のビューに焦点が当てられます。

public class CustomPopUp extends PopupWindow 
{ 

    private final View.OnTouchListener customPopUpTouchListenr = new View.OnTouchListener() 
    { 

     @Override 
     public boolean onTouch(final View v, final MotionEvent event) 
     { 

      return false; 
     } 
    }; 

    public CustomPopUp(final View theView) 
    { 
     super(theView); 

     initView(); 

     setTouchInterceptor(customPopUpTouchListenr); 

    } 

    private void initView() 
    { 
     setWidth(LayoutParams.WRAP_CONTENT); 
     setHeight(LayoutParams.WRAP_CONTENT); 

     setTouchable(true); 
     setOutsideTouchable(true); 

     setBackgroundDrawable(new ColorDrawable()); 

    } 

} 
+0

この場合、EditTextビューはウィンドウ自体の内部にあります。だから私はキーボードを表示するためにウィンドウを内側に集中させなければならない。 – user634545

+0

解決済みとしてマークしてください –

+0

私の言ったように、私の問題は解決しませんでした。ポップアップでは、ポップアップウィンドウ内のedittextが機能するためにフォーカスが必要です。私はAndroidソースからPopupWindowを取り出し、ディスパッチキーメソッドを変更することでこの問題を解決しました。 – user634545