diff options
| -rw-r--r-- | core/java/android/view/View.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index febd2e2efdac..7d823b1c100d 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<Rect> collectPreferKeepClearRects() { ListenerInfo info = mListenerInfo; - final List<Rect> list = new ArrayList<>(); + boolean keepBoundsClear = + (info != null && info.mPreferKeepClear) || mPreferKeepClearForFocus; + boolean hasCustomKeepClearRects = info != null && info.mKeepClearRects != null; + + if (!keepBoundsClear && !hasCustomKeepClearRects) { + return Collections.emptyList(); + } else if (keepBoundsClear && !hasCustomKeepClearRects) { + return Collections.singletonList(new Rect(0, 0, getWidth(), getHeight())); + } - if ((info != null && info.mPreferKeepClear) || mPreferKeepClearForFocus) { + final List<Rect> 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); } |