2012-03-01 8 views
1

포커스가있는 PopupWindow의 키 이벤트를 기본 Activity에 어떻게 디스패치합니까? 창을 포커스 가능으로 설정하면 모든 이벤트가 소모됩니다. 나는 열쇠를 가로 채고, 이벤트를 처리 할 수 ​​있기를 원합니다.PopupWindow, dispatch key event

내 딜레마는 다음과 같습니다. 내 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보기는 창 내부에 있습니다. 그래서 저는 키보드를 표시하기 위해 inorder 창을 집중시켜야합니다. – user634545

+0

해결 방법으로 표시하십시오 –

+0

그건 내 문제를 해결하지 못했습니다. 내가 말했던 것처럼 팝업 창 내부의 edittext에 포커스가 있어야합니다. Android 소스에서 PopupWindow를 가져 와서 디스패치 키 메서드를 수정하여이 문제를 해결했습니다. – user634545