如何将键事件从可聚焦的 PopupWindow 分派(dispatch)到基础 Activity。如果我设置 窗口可聚焦,它会消耗所有事件。我希望能够拦截一个 key ,并处理 事件。
这是我的困境: 我的 PopupWindow 包含一个 EditText,为了在窗口顶部显示键盘,我不得不将焦点设置在窗口上。由于焦点问题,我无法拦截关键事件(在本例中为菜单按钮)以关闭窗口。
最佳答案
您只能处理聚焦 View 的事件。
您可以尝试使用我的 CustomPopUp。
它的工作原理如下:如果您单击 EditText,输入一些内容,然后打开 CustomPopUp 并继续输入,您将输入 EditText。因此,即使您打开 CustomPopUp,之前的 View 也会聚焦。
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());
}
}
关于android - PopupWindow,派发按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515336/