我實現了一個彈出窗口,當我按下硬件菜單鍵時彈出窗口。現在我想再次按下菜單鍵時關閉彈出窗口。按下選項菜單時關閉彈出框
我想這
@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」))並告訴我它做了什麼。 – 2012-08-14 06:35:50
我在每個聽衆都做過。當我按下菜單按鈕並顯示彈出窗口時,會出現日誌。一旦顯示彈出窗口,當我再次按下菜單關閉彈出窗口時,沒有任何反應,並且日誌沒有註冊。 – darsh 2012-08-14 06:53:06