Position View 在当前布局上方但不在导航栏和状态栏上方

Position View above current layout but not above navigation bar and status bar

我想知道是否可以通过编程方式将 View 定位在当前布局之上而不是导航栏和状态栏之上?

我试过这个:

MyView myView = new MyView(context)
ViewGroup root = activity.getWindow().getDecorView().getRootView();
root.addView(myView);

好的是View在一切之上,不好的是View也在导航栏和状态栏之上,所以当我移动它的时候,它可以在它们之上。我知道我可以让我的布局成为 FrameLayouts,但我不想这样做并强制所有布局成为 FrameLayouts。

有什么解决这个问题的想法吗?

这个怎么样

MyView myView = new MyView(context)
FrameLayout root = (FrameLayout)activity.getWindow()
        .getDecorView();//your decorview is a FrameLayout
root.addView(myView,0);//can add params

编辑

对于逻辑,首先通过获取对导航栏的引用并在它是 Dialog 或 [= 之后调用 getLocationOnScreen(int[]) 来获取导航栏在屏幕上的位置13=] 你可以使用 Gravity 将它定位在导航栏的顶部,因为你有坐标,但如果它是 View 你可以使用边距和 Gravity 全部LayoutParams 将其定位到您喜欢的位置。

足够清醒?