diff options
| -rw-r--r-- | core/java/android/view/InsetsState.java | 4 | ||||
| -rw-r--r-- | core/java/android/view/WindowInsets.java | 50 |
2 files changed, 48 insertions, 6 deletions
diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java index c5154662928e..9896aa4fe214 100644 --- a/core/java/android/view/InsetsState.java +++ b/core/java/android/view/InsetsState.java @@ -172,6 +172,10 @@ public class InsetsState implements Parcelable { for (int type = FIRST_TYPE; type <= LAST_TYPE; type++) { InsetsSource source = mSources.get(type); if (source == null) { + int index = indexOf(toPublicType(type)); + if (typeInsetsMap[index] == null) { + typeInsetsMap[index] = Insets.NONE; + } continue; } diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java index 9b2a6cbce48f..33a45f170164 100644 --- a/core/java/android/view/WindowInsets.java +++ b/core/java/android/view/WindowInsets.java @@ -835,12 +835,24 @@ public final class WindowInsets { @Override public String toString() { - return "WindowInsets{systemWindowInsets=" + getSystemWindowInsets() - + " stableInsets=" + getStableInsets() - + " sysGestureInsets=" + getSystemGestureInsets() - + (mDisplayCutout != null ? " cutout=" + mDisplayCutout : "") - + (isRound() ? " round" : "") - + "}"; + StringBuilder result = new StringBuilder("WindowInsets{\n "); + for (int i = 0; i < SIZE; i++) { + Insets insets = mTypeInsetsMap[i]; + Insets maxInsets = mTypeMaxInsetsMap[i]; + boolean visible = mTypeVisibilityMap[i]; + if (!Insets.NONE.equals(insets) || !Insets.NONE.equals(maxInsets) || visible) { + result.append(Type.toString(1 << i)).append("=").append(insets) + .append(" max=").append(maxInsets) + .append(" vis=").append(visible) + .append("\n "); + } + } + + result.append(mDisplayCutout != null ? "cutout=" + mDisplayCutout : ""); + result.append("\n "); + result.append(isRound() ? "round" : ""); + result.append("}"); + return result.toString(); } /** @@ -1309,6 +1321,32 @@ public final class WindowInsets { } } + static String toString(@InsetsType int type) { + switch (type) { + case STATUS_BARS: + return "statusBars"; + case NAVIGATION_BARS: + return "navigationBars"; + case CAPTION_BAR: + return "captionBar"; + case IME: + return "ime"; + case SYSTEM_GESTURES: + return "systemGestures"; + case MANDATORY_SYSTEM_GESTURES: + return "mandatorySystemGestures"; + case TAPPABLE_ELEMENT: + return "tappableElement"; + case DISPLAY_CUTOUT: + return "displayCutout"; + case WINDOW_DECOR: + return "windowDecor"; + default: + throw new IllegalArgumentException("type needs to be >= FIRST and <= LAST," + + " type=" + type); + } + } + private Type() { } |