Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to show PopupWindow at special location?

I need to show PopupWindow under one Views shown on the screen.

How can I calculate coordinates of needed View and place PopupWindow under it? Code example are more than welcome. Thanks.

like image 293
Eugene Avatar asked Sep 16 '11 22:09

Eugene


People also ask

How do I set a pop up window position?

you have getLeft() and getBottom() to get the exact position of the view in the layout. You also have getWidth() and getHeight() to know the exact space occupied by the view. If you want to position your popup window below a view. You setLeft() and setTop() methods of the view to position the new popup Window.

How do I show pop ups on Android?

Use setWidth(int) and setHeight(int) . Set the layout type for this window. Display the content view in a popup window anchored to the bottom-left corner of the anchor view. Displays the content view in a popup window anchored to the corner of another view.


2 Answers

Locating an already displayed view is fairly easy - here's what I use in my code:

public static Rect locateView(View v) {     int[] loc_int = new int[2];     if (v == null) return null;     try     {         v.getLocationOnScreen(loc_int);     } catch (NullPointerException npe)     {         //Happens when the view doesn't exist on screen anymore.         return null;     }     Rect location = new Rect();     location.left = loc_int[0];     location.top = loc_int[1];     location.right = location.left + v.getWidth();     location.bottom = location.top + v.getHeight();     return location; } 

You could then use code similar to what Ernesta suggested to stick the popup in the relevant location:

popup.showAtLocation(parent, Gravity.TOP|Gravity.LEFT, location.left, location.bottom); 

This would show the popup directly under the original view - no guarantee that there would be enough room to display the view though.

like image 97
zeetoobiker Avatar answered Oct 01 '22 12:10

zeetoobiker


you have getLeft() and getBottom() to get the exact position of the view in the layout. You also have getWidth() and getHeight() to know the exact space occupied by the view. If you want to position your popup window below a view.

You setLeft() and setTop() methods of the view to position the new popup Window.

like image 40
Yashwanth Kumar Avatar answered Oct 01 '22 12:10

Yashwanth Kumar