1. 程式人生 > >PopupWindow響應返回鍵的問題

PopupWindow響應返回鍵的問題

 假設情景是這樣的:在一個Activity中彈出一個PopupWindow,要求在按返回鍵時關閉該PopupWindow。

 如果該PopupWindow是無焦點的(預設情況),那麼可以在Activity中響應返回鍵(onBackPressed),然後關閉它。

 如果該PopupWindow是有焦點的,那麼在它彈出來之後,所有的按鍵和觸控事件都會被它截獲,包括返回鍵。

 讓PopupWindow獲得焦點有兩種方法,第一種是在建立的時候指定,第二種是在建立之後,呼叫它的setFocusable方法指定。

 但是僅僅使PopupWindow獲得焦點還不行,此時它不響應返回鍵,也就是說,按返回鍵的時候PopupWindow並不會關閉。

  如果需要PopupWindow響應返回鍵,那麼必須給PopupWindow設定一個背景才行,下面是通常的做法:

setFocusable(true);
ColorDrawable dw = new ColorDrawable(0x00000000);
setBackgroundDrawable(dw);