diff options
author | Adam Powell <adamp@google.com> | 2015-05-15 13:39:22 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2015-05-15 13:59:40 -0700 |
commit | c9f2293471155b8cc56ba18c98325b3893dd659d (patch) | |
tree | 75a5b20ca79c902ddc5a16f1a6e003b2785baeb5 /core/java/com/android | |
parent | ebb1d76e32535df04be5baab72fc067decf8ee15 (diff) | |
download | frameworks_base-c9f2293471155b8cc56ba18c98325b3893dd659d.zip frameworks_base-c9f2293471155b8cc56ba18c98325b3893dd659d.tar.gz frameworks_base-c9f2293471155b8cc56ba18c98325b3893dd659d.tar.bz2 |
Preserve ResolverDrawerLayout fully collapsed state across relayout
Fix a bug where a relayout that grows the size of ResolverDrawerLayout
content would cause it to get stuck in a half-collapsed state. This
could also lead to janky touch interaction behavior in
onStopNestedScroll as it animates to the fully open/closed state after
clicking in a descendant list.
Bug 21202727
Change-Id: I5f0a8b19fc079c57fcf2be7c6fa7627b1cb12a3c
Diffstat (limited to 'core/java/com/android')
-rw-r--r-- | core/java/com/android/internal/widget/ResolverDrawerLayout.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java index 01e835b..be727f1 100644 --- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java +++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java @@ -661,13 +661,20 @@ public class ResolverDrawerLayout extends ViewGroup { } } + final int oldCollapsibleHeight = mCollapsibleHeight; mCollapsibleHeight = Math.max(0, heightUsed - alwaysShowHeight - getMaxCollapsedHeight()); mUncollapsibleHeight = heightUsed - mCollapsibleHeight; if (isLaidOut()) { final boolean isCollapsedOld = mCollapseOffset != 0; - mCollapseOffset = Math.min(mCollapseOffset, mCollapsibleHeight); + if (oldCollapsibleHeight < mCollapsibleHeight + && mCollapseOffset == oldCollapsibleHeight) { + // Stay closed even at the new height. + mCollapseOffset = mCollapsibleHeight; + } else { + mCollapseOffset = Math.min(mCollapseOffset, mCollapsibleHeight); + } final boolean isCollapsedNew = mCollapseOffset != 0; if (isCollapsedOld != isCollapsedNew) { notifyViewAccessibilityStateChangedIfNeeded( |