diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index febd2e2efdacf..7d823b1c100d2 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -11939,13 +11939,22 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @NonNull List collectPreferKeepClearRects() { ListenerInfo info = mListenerInfo; - final List list = new ArrayList<>(); + boolean keepBoundsClear = + (info != null && info.mPreferKeepClear) || mPreferKeepClearForFocus; + boolean hasCustomKeepClearRects = info != null && info.mKeepClearRects != null; - if ((info != null && info.mPreferKeepClear) || mPreferKeepClearForFocus) { + if (!keepBoundsClear && !hasCustomKeepClearRects) { + return Collections.emptyList(); + } else if (keepBoundsClear && !hasCustomKeepClearRects) { + return Collections.singletonList(new Rect(0, 0, getWidth(), getHeight())); + } + + final List list = new ArrayList<>(); + if (keepBoundsClear) { list.add(new Rect(0, 0, getWidth(), getHeight())); } - if (info != null && info.mKeepClearRects != null) { + if (hasCustomKeepClearRects) { list.addAll(info.mKeepClearRects); }