代码

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层级设高
    • 当然 最小的数值是需要权限的,否则盖过锁屏了
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐