如果需要在 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 必須獲得焦點,才能響應點擊事件