summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ian Lake <ilake@google.com> 2017-05-24 10:23:17 -0700
committer Ian Lake <ilake@google.com> 2017-05-24 10:23:17 -0700
commit67c0b1b51ebc645e4ac49e5a5c488e0abfa5523c (patch)
tree0f15b41b69c2d58850539838df596b0ae2139f6d
parent367b880c028ac7bec7399e992b7378231da7fd61 (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.java5
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);