我想知道是否可以将View放在当前布局上方但不能以编程方式位于导航栏和状态栏上方?
我试过这个:
MyView myView = new MyView(context)
ViewGroup root = activity.getWindow().getDecorView().getRootView();
root.addView(myView);
好处是View高于一切,但不好的是View也在导航栏和状态栏之上,所以当我移动它时,它可以在它们之上。我知道我可以将我的布局设置为FrameLayouts但我不想这样做并强制所有这些都是FrameLayouts。
任何想法如何解决这个问题?
答案 0 :(得分:1)
这个怎么样
MyView myView = new MyView(context)
FrameLayout root = (FrameLayout)activity.getWindow()
.getDecorView();//your decorview is a FrameLayout
root.addView(myView,0);//can add params
修改
对于逻辑,首先通过获取导航栏的引用并在getLocationOnScreen(int[])
或Dialog
之后调用PopupWindow
来获取屏幕上导航栏的位置您可以使用Gravity
将其放置在导航栏的顶部,因为您有坐标,但如果是View
,您可以在Gravity
中使用边距LayoutParams
{1}}将其定位到您偏好的位置。
Lucid够吗?