如何监听window的back键?
可以重写window的根view的dispatchKeyEvent方法:
WindowManager mWindowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = mWindowManager.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
int statusBarHeight = getStatusBarHeight();
final PopupWindow pw = new PopupWindow(width, height - statusBarHeight);
final FrameLayout container = new FrameLayout(getContext()){
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_UP) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
Log.addLog(this, "window height =" + pw.getHeight());
removeAllViews();
pw.dismiss();
return true;
}
}
return super.dispatchKeyEvent(event);
}
};
container.addView(view, params);
pw.setContentView(container);
pw.setFocusable(true);
pw.setAnimationStyle(R.style.popUpWindowAnimation);
pw.showAtLocation(this, Gravity.NO_GRAVITY, 0, statusBarHeight);
windowManager 也一样。