假设情景是这样的:在一个Activity中弹出一个PopupWindow,要求在按返回键时关闭该PopupWindow。
如果该PopupWindow是无焦点的(默认情况),那么可以在Activity中响应返回键(onBackPressed),然后关闭它。
如果该PopupWindow是有焦点的,那么在它弹出来之后,所有的按键和触摸事件都会被它截获;在按返回键时,它会自动关闭。
让PopupWindow获得焦点有两种方法,第一种是在创建的时候指定,这种比较保险。
第二种是调用它的setFocusable方法,但是这种方法必须做如下调用才会生效:
setFocusable(true); ColorDrawable dw = new ColorDrawable(0x00000000); setBackgroundDrawable(dw);