summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt1
-rw-r--r--api/test-current.txt1
-rw-r--r--core/java/android/view/View.java25
-rw-r--r--core/java/android/view/ViewGroup.java4
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);
}