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);

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章