解决PopupWindow获得焦点后Activity按键无响应的问题

 PopupWindow里面要响应点击事件,所以就调用了setFocusable(true)方法,这样造成了显示了PopupWindow,无法响应按键事件了。
如果你只是要响应返回键:
PopupWindow调用setBackgroundDrawable(new BitmapDrawable())这个方法就行了,貌似是要设个背景资源(具体原因查API也没搞清),这里设个空的就不影响其他界面了。
如果你需要响应其他按键,比如我是按menu出来PopupWindow,再按menu就消失:
先获得你自定义PopupWindow的layout
diyView = getLayoutInflater().inflate(“自定义的layout”, null);
PopupWindow获得焦点后,Activity的按键事件是响应不了的,所以获得这个layout的一个子View(我是获得最外层的RelativeLayout),设置OnKeyListener,让这个view在PopupWindow显示的时候响应按键事件,看代码:

RelativeLayout layout = (RelativeLayout) diyView.findViewById(R.id.othernavigation_root);
layout.setFocusableInTouchMode(true);//能够获得焦点
layout.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_BACK:
checkAndClear();
break;
case KeyEvent.KEYCODE_MENU:
checkAndClear();
break;
}
}
return true;
}
});

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注