PopupWindow在设置了焦点之后,那么这个弹出窗口就是当前操作的窗口,如果想要在此时响应按键事件,就需要在PopupWindow上注册键盘事件来响应。但是PopupWindow好像只有一个OnDismissListener,怎么来注册键盘事件监听呢?
可以利用PopupWindow里的最外层View,对该子View监听键盘事件setOnKeyListener即可。
popupwindow.setBackgroundDrawable(new BitmapDrawable()); popupwindow.setFocusable(true); popupwindow.setFocusableInTouchMode(true); childrenView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { Log.v("keyCode", "/" + keyCode); if(popupwindow != null) { popupwindow.dismiss(); popupwindow = null; } } return false; } });