【疑難】Android 在 WindowManager 中使用 ListView 點擊不響應問題記錄

如果需要在 Android 手機上顯示一個浮動窗口,你可以使用 WindowManager.addView 


但是這次我遇到的問題是,浮動窗口包含了一個 ListView,遇到的問題是 onItemClick(AdapterView<?> parent, View view, int position, long id) 事件死都不響應


於是我就蛋疼了,各種嘗試,查資料,


幾番折騰下,終於發現了問題,我之前使用的 flag 是

		wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL|LayoutParams.FLAG_NOT_FOCUSABLE;

後來改成,

wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL;
問題就解決了,更全一點的代碼,

		// 2、設置LayoutParams(全局變量)相關參數
		wmParams = new WindowManager.LayoutParams();
		
		// 3、設置相關的窗口布局參數 (懸浮窗口效果)
		wmParams.type = LayoutParams.TYPE_PHONE; // 設置window type
//		wmParams.type = LayoutParams.TYPE_APPLICATION; // 設置window type
		wmParams.format = PixelFormat.RGBA_8888; // 設置圖片格式,效果爲背景透明
		// 4、設置Window flag == 不影響後面的事件 
		wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL;

就是一個 view 焦點衝突的問題,而 ListView 必須獲得焦點,才能響應點擊事件





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