【发布时间】:2012-08-14 17:49:19
【问题描述】:
我实现了一个弹出窗口,当我按下硬件菜单键时它会出现。现在我想在我再次按下菜单键时关闭弹出窗口。
我试过了
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (pw.isShowing()) {
pw.dismiss();
} else {
openpopup();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
这是打开弹窗的方法
public void openpop() {
View view1 = getCurrentFocus();
showpopup(view1);
}
这里是 showpopup 方法
public void showpopup(View view) {
pw.setTouchable(true);
pw.setFocusable(true);
pw.setTouchInterceptor(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
pw.dismiss();
return true;
}
return false;
}
});
try {
pw.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
pw.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
pw.setOutsideTouchable(false);
pw.setContentView(popupView);
pw.showAsDropDown(view, 0, 0);
popUpShowed = true;
} catch (Exception e) {
Log.e("SAMPLE", "Exception", e);
}
}
但是当我按下菜单时弹出窗口并没有消失。
可能是什么问题?我需要以某种方式完成这项工作。请帮帮我。
【问题讨论】:
-
我确信您的弹出窗口已显示并立即消失。您能否将一条日志消息放入每个侦听器中? (Log.i("TEST","POPUP")) 并告诉我它的作用。
-
我在每个听众中都这样做了。当我按下菜单按钮并显示弹出窗口时,会出现日志。显示弹出窗口后,当我再次按菜单关闭弹出窗口时,什么也没有发生并且日志没有注册。
标签: android popup android-menu