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
将其定位到您喜欢的位置。
足够清醒?
我想知道是否可以通过编程方式将 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
将其定位到您喜欢的位置。
足够清醒?