summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/widget/PopupWindow.java12
1 files changed, 5 insertions, 7 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index 5935c7889e9c..b12c03ca9c15 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -193,6 +193,8 @@ public class PopupWindow {
private int mAnimationStyle = ANIMATION_STYLE_DEFAULT;
+ private int mGravity = Gravity.NO_GRAVITY;
+
private static final int[] ABOVE_ANCHOR_STATE_SET = new int[] {
com.android.internal.R.attr.state_above_anchor
};
@@ -1141,15 +1143,11 @@ public class PopupWindow {
mIsShowing = true;
mIsDropdown = false;
+ mGravity = gravity;
final WindowManager.LayoutParams p = createPopupLayoutParams(token);
preparePopup(p);
- // Only override the default if some gravity was specified.
- if (gravity != Gravity.NO_GRAVITY) {
- p.gravity = gravity;
- }
-
p.x = x;
p.y = y;
@@ -1394,8 +1392,8 @@ public class PopupWindow {
}
private int computeGravity() {
- int gravity = Gravity.START | Gravity.TOP;
- if (mClipToScreen || mClippingEnabled) {
+ int gravity = mGravity == Gravity.NO_GRAVITY ? Gravity.START | Gravity.TOP : mGravity;
+ if (mIsDropdown && (mClipToScreen || mClippingEnabled)) {
gravity |= Gravity.DISPLAY_CLIP_VERTICAL;
}
return gravity;