diff options
-rw-r--r-- | api/current.txt | 1 | ||||
-rw-r--r-- | api/test-current.txt | 1 | ||||
-rw-r--r-- | core/java/android/view/View.java | 25 | ||||
-rw-r--r-- | core/java/android/view/ViewGroup.java | 4 |
4 files changed, 25 insertions, 6 deletions
diff --git a/api/current.txt b/api/current.txt index 94a913d82fe1..0d7ce9d1e547 100644 --- a/api/current.txt +++ b/api/current.txt @@ -51682,6 +51682,7 @@ package android.view { method public boolean isScrollContainer(); method public boolean isScrollbarFadingEnabled(); method @android.view.ViewDebug.ExportedProperty public boolean isSelected(); + method public final boolean isShowingLayoutBounds(); method public boolean isShown(); method @android.view.ViewDebug.ExportedProperty public boolean isSoundEffectsEnabled(); method public final boolean isTemporarilyDetached(); diff --git a/api/test-current.txt b/api/test-current.txt index 503941c86939..08a21609d476 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -4359,6 +4359,7 @@ package android.view { method public void setAutofilled(boolean); method public final void setFocusedInCluster(); method public void setIsRootNamespace(boolean); + method public final void setShowingLayoutBounds(boolean); } public class ViewConfiguration { diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 1a5b3e58f576..0db80e2749c3 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -6162,10 +6162,27 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mRenderNode = RenderNode.create(getClass().getName(), new ViewAnimationHostBridge(this)); } - final boolean debugDraw() { + /** + * Returns {@code true} when the View is attached and the system developer setting to show + * the layout bounds is enabled or {@code false} otherwise. + */ + public final boolean isShowingLayoutBounds() { return DEBUG_DRAW || mAttachInfo != null && mAttachInfo.mDebugLayout; } + /** + * Used to test isShowingLayoutBounds(). This sets the local value used + * by that function. This method does nothing if the layout isn't attached. + * + * @hide + */ + @TestApi + public final void setShowingLayoutBounds(boolean debugLayout) { + if (mAttachInfo != null) { + mAttachInfo.mDebugLayout = debugLayout; + } + } + private static SparseArray<String> getAttributeMap() { if (mAttributeMap == null) { mAttributeMap = new SparseArray<>(); @@ -20881,7 +20898,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (mOverlay != null && !mOverlay.isEmpty()) { mOverlay.getOverlayView().draw(canvas); } - if (debugDraw()) { + if (isShowingLayoutBounds()) { debugDrawFocus(canvas); } } else { @@ -22026,7 +22043,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Step 7, draw the default focus highlight drawDefaultFocusHighlight(canvas); - if (debugDraw()) { + if (isShowingLayoutBounds()) { debugDrawFocus(canvas); } @@ -22201,7 +22218,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Step 6, draw decorations (foreground, scrollbars) onDrawForeground(canvas); - if (debugDraw()) { + if (isShowingLayoutBounds()) { debugDrawFocus(canvas); } } diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 21e9e3185066..5fb71773db8f 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -681,7 +681,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager private void initViewGroup() { // ViewGroup doesn't draw by default - if (!debugDraw()) { + if (!isShowingLayoutBounds()) { setFlags(WILL_NOT_DRAW, DRAW_MASK); } mGroupFlags |= FLAG_CLIP_CHILDREN; @@ -4156,7 +4156,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } if (usingRenderNodeProperties) canvas.insertInorderBarrier(); - if (debugDraw()) { + if (isShowingLayoutBounds()) { onDebugDraw(canvas); } |