位置视图高于当前布局但不在导航栏和状态栏上方

时间:2015-06-29 21:59:49

标签: android android-layout android-view

我想知道是否可以将View放在当前布局上方但不能以编程方式位于导航栏和状态栏上方?

我试过这个:

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

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

任何想法如何解决这个问题?

1 个答案:

答案 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够吗?