PopupWindow is above status bar in some device
Asked Answered
C

1

7

Here is my code for show a PopupWindow

View rootView = activity.getWindow().getDecorView().getRootView();
mPopupWindow.showAtLocation(rootView, Gravity.NO_GRAVITY, 0, 0);

When I test it on Samsung, Nexus device it show below the status bar
However when I test it on Sony device it show above the status bar (like the image below)

So which device display correct or what I do wrong ? Any help or suggestion would be great appreciated

enter image description here

Chantress answered 3/1, 2017 at 9:15 Comment(0)
C
2

I solve my problem by create a temp View at top-left (topLeftView in below code).
Then when I show the PopupWindow, I will show it at (0, the y coordinate of topLeftView) not (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]);

I think this solution will work for all devices

Chantress answered 4/1, 2017 at 1:47 Comment(1)
It looks like the Android flavor in Sony devices calculate the top left corner as the physical top left corner while the Nexus and Samsung devices calculate the top left corner excluding the status bar.Momently

© 2022 - 2024 — McMap. All rights reserved.