diff options
| author | 2017-05-24 10:23:17 -0700 | |
|---|---|---|
| committer | 2017-05-24 10:23:17 -0700 | |
| commit | 67c0b1b51ebc645e4ac49e5a5c488e0abfa5523c (patch) | |
| tree | 0f15b41b69c2d58850539838df596b0ae2139f6d | |
| parent | 367b880c028ac7bec7399e992b7378231da7fd61 (diff) | |
Relayout when base inner insets change
When using SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN and
fitsSystemWindows="true", there are cases when the
inner insets will change but the content insets will
remain the same.
One case where this happens is when using
windowSoftInputMode="adjustResize|stateHidden",
bringing the keyboard up, hitting the Recents button,
then going back into the app.
By issuing a requestLayout when the base inner insets
change, we ensure that the inner layout is properly
updated, avoiding an empty space where they keyboard
used to be.
Test: Run app from b/37743589#comment6
BUG: 37743589
Change-Id: I7615c51b8f4eee3971b9b95e638011c1d885b3a6
| -rw-r--r-- | core/java/com/android/internal/widget/ActionBarOverlayLayout.java | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java index 65cd4fa20341..5d7fa6a742be 100644 --- a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java +++ b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java @@ -76,6 +76,7 @@ public class ActionBarOverlayLayout extends ViewGroup implements DecorContentPar private final Rect mLastBaseContentInsets = new Rect(); private final Rect mContentInsets = new Rect(); private final Rect mBaseInnerInsets = new Rect(); + private final Rect mLastBaseInnerInsets = new Rect(); private final Rect mInnerInsets = new Rect(); private final Rect mLastInnerInsets = new Rect(); @@ -323,6 +324,10 @@ public class ActionBarOverlayLayout extends ViewGroup implements DecorContentPar mBaseInnerInsets.set(systemInsets); computeFitSystemWindows(mBaseInnerInsets, mBaseContentInsets); + if (!mLastBaseInnerInsets.equals(mBaseInnerInsets)) { + changed = true; + mLastBaseContentInsets.set(mBaseContentInsets); + } if (!mLastBaseContentInsets.equals(mBaseContentInsets)) { changed = true; mLastBaseContentInsets.set(mBaseContentInsets); |