2012-03-01 103 views
1

如何将关键事件从可调焦的PopupWindow调度到基础活动。如果我将 窗口设置为可调焦,它会消耗所有事件。我希望能够截获一个密钥,并处理事件。PopupWindow,调度关键事件

这是我的困境: 我的PopupWindow包含一个EditText,为了显示窗口的键盘ontop,我不得不在窗口上设置焦点。由于焦点问题,这个问题是我无法拦截按键事件,在这种情况下是菜单按钮来关闭窗口。

回答

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 2012-03-01 12:49:12

+0

请标记为已解决 – 2012-03-02 12:57:55

+0

这并不能解决我的问题,正如我所说的,弹出窗口需要重点关注弹出窗口内的edittext才能工作。我通过从Android源获取PopupWindow并修改调度密钥方法来解决问题。 – user634545 2012-03-03 10:02:51