diff options
| author | Alan Viverette <alanv@google.com> | 2015-08-06 17:48:22 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-08-06 17:48:22 +0000 |
| commit | c7f8133fa1ff78fea5a54974b5987791cb012f84 (patch) | |
| tree | 82d56bb743112e5a8abdaee32103ed78f7898846 /core/java/android | |
| parent | 6b0f1e78b841a32b45f513d283202e3af90c6a73 (diff) | |
| parent | 697804e8de9f0a838a90c571baad19c5ed4d1647 (diff) | |
| download | frameworks_base-c7f8133fa1ff78fea5a54974b5987791cb012f84.zip frameworks_base-c7f8133fa1ff78fea5a54974b5987791cb012f84.tar.gz frameworks_base-c7f8133fa1ff78fea5a54974b5987791cb012f84.tar.bz2 | |
Merge "Update anchor background on the correct view in PopupWindow" into mnc-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/widget/PopupWindow.java | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index b4cbf35..f9fa027 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -105,7 +105,10 @@ public class PopupWindow { /** View that handles event dispatch and content transitions. */ private PopupDecorView mDecorView; - /** The contents of the popup. */ + /** View that holds the background and may animate during a transition. */ + private View mBackgroundView; + + /** The contents of the popup. May be identical to the background view. */ private View mContentView; private boolean mFocusable; @@ -1111,18 +1114,18 @@ public class PopupWindow { if (aboveAnchor != mAboveAnchor) { mAboveAnchor = aboveAnchor; - if (mBackground != null) { - // If the background drawable provided was a StateListDrawable with above-anchor - // and below-anchor states, use those. Otherwise rely on refreshDrawableState to - // do the job. + if (mBackground != null && mBackgroundView != null) { + // If the background drawable provided was a StateListDrawable + // with above-anchor and below-anchor states, use those. + // Otherwise, rely on refreshDrawableState to do the job. if (mAboveAnchorBackgroundDrawable != null) { if (mAboveAnchor) { - mDecorView.setBackground(mAboveAnchorBackgroundDrawable); + mBackgroundView.setBackground(mAboveAnchorBackgroundDrawable); } else { - mDecorView.setBackground(mBelowAnchorBackgroundDrawable); + mBackgroundView.setBackground(mBelowAnchorBackgroundDrawable); } } else { - mDecorView.refreshDrawableState(); + mBackgroundView.refreshDrawableState(); } } } @@ -1164,22 +1167,21 @@ public class PopupWindow { // When a background is available, we embed the content view within // another view that owns the background drawable. - final View backgroundView; if (mBackground != null) { - backgroundView = createBackgroundView(mContentView); - backgroundView.setBackground(mBackground); + mBackgroundView = createBackgroundView(mContentView); + mBackgroundView.setBackground(mBackground); } else { - backgroundView = mContentView; + mBackgroundView = mContentView; } - mDecorView = createDecorView(backgroundView); + mDecorView = createDecorView(mBackgroundView); // The background owner should be elevated so that it casts a shadow. - backgroundView.setElevation(mElevation); + mBackgroundView.setElevation(mElevation); // We may wrap that in another view, so we'll need to manually specify // the surface insets. - final int surfaceInset = (int) Math.ceil(backgroundView.getZ() * 2); + final int surfaceInset = (int) Math.ceil(mBackgroundView.getZ() * 2); p.surfaceInsets.set(surfaceInset, surfaceInset, surfaceInset, surfaceInset); p.hasManualSurfaceInsets = true; @@ -1650,6 +1652,7 @@ public class PopupWindow { // This needs to stay until after all transitions have ended since we // need the reference to cancel transitions in preparePopup(). mDecorView = null; + mBackgroundView = null; mIsTransitioningToDismiss = false; } |
