PopupWindow 在某些设备中位于状态栏上方
PopupWindow is above status bar in some device
这是我用于显示 PopupWindow
的代码
View rootView = activity.getWindow().getDecorView().getRootView();
mPopupWindow.showAtLocation(rootView, Gravity.NO_GRAVITY, 0, 0);
当我在 Samsung
、Nexus
设备上测试它时,它显示 下方 状态栏
然而,当我在 Sony
设备上测试它时,它显示 在 状态栏上方(如下图)
那么哪个设备显示正确或者我哪里做错了?
任何帮助或建议将不胜感激
我通过在 top-left
(下面代码中的 topLeftView
)创建一个 temp View
来解决我的问题。
然后当我显示 PopupWindow
时,我会在 (0, the y coordinate of topLeftView)
显示它,而不是 (0,0)
View topLeftView = findViewById(R.id.top_left_View);
int topLeftPos[] = new int[2];
topLeftView.getLocationOnScreen(topLeftPos);
mPopupWindow.showAtLocation(topLeftView, Gravity.NO_GRAVITY, 0, topLeftPos[1]);
我认为此解决方案适用于所有设备
这是我用于显示 PopupWindow
View rootView = activity.getWindow().getDecorView().getRootView();
mPopupWindow.showAtLocation(rootView, Gravity.NO_GRAVITY, 0, 0);
当我在 Samsung
、Nexus
设备上测试它时,它显示 下方 状态栏
然而,当我在 Sony
设备上测试它时,它显示 在 状态栏上方(如下图)
那么哪个设备显示正确或者我哪里做错了? 任何帮助或建议将不胜感激
我通过在 top-left
(下面代码中的 topLeftView
)创建一个 temp View
来解决我的问题。
然后当我显示 PopupWindow
时,我会在 (0, the y coordinate of topLeftView)
显示它,而不是 (0,0)
View topLeftView = findViewById(R.id.top_left_View);
int topLeftPos[] = new int[2];
topLeftView.getLocationOnScreen(topLeftPos);
mPopupWindow.showAtLocation(topLeftView, Gravity.NO_GRAVITY, 0, topLeftPos[1]);
我认为此解决方案适用于所有设备