我正在编写一个应用程序,其中使用以下代码向 WindowManager
添加一个 View :
private final FloatingBubbleView mBtn;
FloatingBubbleView iv = new FloatingBubbleView(context);
this.mBtn = iv;
this.mWm = (WindowManager) mAppContext.get().getSystemService(Context.WINDOW_SERVICE);
mWm.addView(mBtn, mLp);
布局参数配置:
final WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.width = iv.getLayoutParams().width;
lp.height = iv.getLayoutParams().height;
lp.type = WindowManager.LayoutParams.TYPE_TOAST;
lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
lp.format = PixelFormat.TRANSLUCENT;
lp.gravity = Gravity.TOP | Gravity.LEFT;
lp.x = 0;
lp.y = 100;
在 Android 7.0 (Nougat) 之前的所有操作系统上,此 View 在切换 Activity 时坚持 WindowManager
,我仍然可以在下一个打开的 Activity 中使用它。
出于某种原因,在 Nougat 上, View 从屏幕上删除了。
问题:有谁知道为什么会发生这种情况以及如何恢复我在以前系统上的先前行为?它与 Nougat 中添加的新自由窗体模式有关吗,在此处描述:
Android Nougat’s freeform window mode: what it is and how developers can utilize it
最佳答案
我想问题出在 TYPE_TOAST 标志上。我在 Nougat 上看到这个 View 消失的错误。
你可以尝试使用 TYPE_SYSTEM_ALERT 标志
关于android - 为什么只在 Nougat 的 Activity 转换中删除添加到 WindowManager 的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44181108/