1. 程式人生 > >Android popupWindow 點選外部消失,點選外部其他控制元件觸發其他事件

Android popupWindow 點選外部消失,點選外部其他控制元件觸發其他事件

問題:

Listview的item有個按鈕,點選按鈕就彈出一個彈框,然後點選彈框外部,彈框消失。問題來了,如果點選是其他item裡的按鈕,只是響應彈框消失事件,並沒有觸發該按鈕的點選事件,要再點一遍該按鈕,才會彈出彈框,程式碼如下:

				PopupWindow pop = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);

				// 需要設定一下此引數,點選外邊可消失
				 pop.setBackgroundDrawable(new BitmapDrawable());
				// 設定點選視窗外邊視窗消失
				pop.setOutsideTouchable(true);
				// 設定此引數獲得焦點,否則無法點選
				pop.setFocusable(true);
				System.out.println("  pop.height: " + popWH[1]);
				pop.showAtLocation(viewHodler.img_isBusy, Gravity.NO_GRAVITY, x - popWH[0]-50, y - popWH[1] / 2);

解決:

關鍵還是在焦點,因為彈框焦點設定的是true,所以點選其他按鈕,不會觸發其他按鈕對應的事件,因為焦點不在那個按鈕上。。所以只要設定成false就好了。

				// 設定此引數失去焦點,這樣點選其他按鈕才能響應相應的事件
				pop.setFocusable(false);

這樣就實現了,點選按鈕彈出彈框,點選外部,彈框消失,如果點選外部某個按鈕,先彈框消失,才觸發該按鈕的相應事件。。