android window 層級的程式碼設定(PopUpWindow遮蓋問題)

雞蛋卷啊卷發表於2020-11-10

程式碼

import androidx.core.widget.PopupWindowCompat;

PopupWindowCompat.setWindowLayoutType(popupWindow, WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL + 100);

AndroidX或者support包中的程式碼

注意

  1. 要在show之前呼叫
    1. show之後,雖然PopUpWindow的LayoutType欄位值變了,但沒有IPC給WindowManagerService,所以不會有實際層級調整
  2. PopUpWindow預設LayoutType都是 public static final int FIRST_SUB_WINDOW = 1000;
    • Type雖然相同,但最近showAtLocation的在最上邊
  3. LayoutType 100 在 10 的上面
    • 即數值越小,Window越靠近螢幕
    • 鎖屏就是基於這個原理,把LayoutType層級設高
    • 當然 最小的數值是需要許可權的,否則蓋過鎖屏了

相關文章