From adf08d4eb9de23a3f5ebff681f48bce6ab5b645a Mon Sep 17 00:00:00 2001 From: Vladislav Kaznacheev Date: Wed, 5 Apr 2017 15:22:10 -0700 Subject: [PATCH] Fix anchor overlap handling in ListPopupWindow Do not change anchor overlap on the underlying PopupWindow unless ListPopupWindow.setOverlapAnchor has been called explicitly. Bug: 36714649 Test: ApiDemos > Views > Spinner Change-Id: I5e66d4409a1f04cdc0fbe64e255609836c2b0e95 --- core/java/android/widget/ListPopupWindow.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java index ab4cce4790056..2e8faeec6f132 100644 --- a/core/java/android/widget/ListPopupWindow.java +++ b/core/java/android/widget/ListPopupWindow.java @@ -76,6 +76,7 @@ public class ListPopupWindow implements ShowableListMenu { private boolean mDropDownVerticalOffsetSet; private boolean mIsAnimatedFromAnchor = true; private boolean mOverlapAnchor; + private boolean mOverlapAnchorSet; private int mDropDownGravity = Gravity.NO_GRAVITY; @@ -681,7 +682,9 @@ public class ListPopupWindow implements ShowableListMenu { mPopup.setOutsideTouchable(!mForceIgnoreOutsideTouch && !mDropDownAlwaysVisible); mPopup.setTouchInterceptor(mTouchInterceptor); mPopup.setEpicenterBounds(mEpicenterBounds); - mPopup.setOverlapAnchor(mOverlapAnchor); + if (mOverlapAnchorSet) { + mPopup.setOverlapAnchor(mOverlapAnchor); + } mPopup.showAsDropDown(getAnchorView(), mDropDownHorizontalOffset, mDropDownVerticalOffset, mDropDownGravity); mDropDownList.setSelection(ListView.INVALID_POSITION); @@ -1259,6 +1262,7 @@ public class ListPopupWindow implements ShowableListMenu { * @hide */ public void setOverlapAnchor(boolean overlap) { + mOverlapAnchorSet = true; mOverlapAnchor = overlap; }