Loading core/java/android/view/View.java +6 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; import android.text.TextUtils; import android.util.AttributeSet; import android.util.FloatProperty; Loading Loading @@ -16919,6 +16920,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal */ Drawable mAccessibilityFocusDrawable; /** * Show where the margins, bounds and layout bounds are for each view. */ final boolean mDebugLayout = SystemProperties.getBoolean("debug.layout", false); /** * Creates a new set of attachment information with the specified * events handler and thread. core/java/android/view/ViewGroup.java +86 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Insets; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PointF; Loading Loading @@ -420,9 +422,15 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager initFromAttributes(context, attrs); } private boolean debugDraw() { return mAttachInfo != null && mAttachInfo.mDebugLayout; } private void initViewGroup() { // ViewGroup doesn't draw by default if (!debugDraw()) { setFlags(WILL_NOT_DRAW, DRAW_MASK); } mGroupFlags |= FLAG_CLIP_CHILDREN; mGroupFlags |= FLAG_CLIP_TO_PADDING; mGroupFlags |= FLAG_ANIMATION_DONE; Loading Loading @@ -2650,6 +2658,52 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager return b; } private static void drawRect(Canvas canvas, int x1, int y1, int x2, int y2, Paint paint) { canvas.drawRect(x1, y1, x2 - 1, y2 - 1, paint); } /** * @hide */ protected void onDebugDrawMargins(Canvas canvas) { for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); c.getLayoutParams().onDebugDraw(this, canvas); } } /** * @hide */ protected void onDebugDraw(Canvas canvas) { Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); // Draw optical bounds if (getLayoutMode() == LAYOUT_BOUNDS) { paint.setColor(Color.RED); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); Insets insets = c.getLayoutInsets(); drawRect(canvas, c.getLeft() + insets.left, c.getTop() + insets.top, c.getRight() - insets.right, c.getBottom() - insets.bottom, paint); } } // Draw bounds paint.setColor(Color.BLUE); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); drawRect(canvas, c.getLeft(), c.getTop(), c.getRight(), c.getBottom(), paint); } // Draw margins onDebugDrawMargins(canvas); } /** * {@inheritDoc} */ Loading Loading @@ -2741,6 +2795,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } if (debugDraw()) { onDebugDraw(canvas); } if (clipToPadding) { canvas.restoreToCount(saveCount); } Loading Loading @@ -5468,6 +5526,17 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager + sizeToString(width) + ", height=" + sizeToString(height) + " }"; } /** * Use {@code canvas} to draw suitable debugging annotations for these LayoutParameters. * * @param view the view that contains these layout parameters * @param canvas the canvas on which to draw * * @hide */ public void onDebugDraw(View view, Canvas canvas) { } /** * Converts the specified size to a readable String. * Loading Loading @@ -5718,6 +5787,22 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager break; } } /** * @hide */ @Override public void onDebugDraw(View view, Canvas canvas) { Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.MAGENTA); drawRect(canvas, view.getLeft() - leftMargin, view.getTop() - topMargin, view.getRight() + rightMargin, view.getBottom() + bottomMargin, paint); } } /* Describes a touched view and the ids of the pointers that it has captured. Loading core/java/android/widget/GridLayout.java +39 −46 Original line number Diff line number Diff line Loading @@ -30,8 +30,8 @@ import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import com.android.internal.R; import android.widget.RemoteViews.RemoteView; import com.android.internal.R; import java.lang.reflect.Array; import java.util.ArrayList; Loading Loading @@ -209,7 +209,6 @@ public class GridLayout extends ViewGroup { // Misc constants static final String TAG = GridLayout.class.getName(); static final boolean DEBUG = false; static final int MAX_SIZE = 100000; static final int DEFAULT_CONTAINER_MARGIN = 0; static final int UNINITIALIZED_HASH = 0; Loading Loading @@ -249,9 +248,6 @@ public class GridLayout extends ViewGroup { */ public GridLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if (DEBUG) { setWillNotDraw(false); } defaultGap = context.getResources().getDimensionPixelOffset(R.dimen.default_gap); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.GridLayout); try { Loading Loading @@ -772,15 +768,29 @@ public class GridLayout extends ViewGroup { } } private static void drawRect(Canvas canvas, int x1, int y1, int x2, int y2, Paint paint) { canvas.drawRect(x1, y1, x2 - 1, y2 - 1, paint); /** * @hide */ @Override protected void onDebugDrawMargins(Canvas canvas) { // Apply defaults, so as to remove UNDEFINED values LayoutParams lp = new LayoutParams(); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); lp.setMargins( getMargin1(c, true, true), getMargin1(c, false, true), getMargin1(c, true, false), getMargin1(c, false, false)); lp.onDebugDraw(c, canvas); } } /** * @hide */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (DEBUG) { protected void onDebugDraw(Canvas canvas) { int height = getHeight() - getPaddingTop() - getPaddingBottom(); int width = getWidth() - getPaddingLeft() - getPaddingRight(); Loading @@ -804,24 +814,7 @@ public class GridLayout extends ViewGroup { } } // Draw bounds paint.setColor(Color.BLUE); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); drawRect(canvas, c.getLeft(), c.getTop(), c.getRight(), c.getBottom(), paint); } // Draw margins paint.setColor(Color.MAGENTA); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); drawRect(canvas, c.getLeft() - getMargin1(c, true, true), c.getTop() - getMargin1(c, false, true), c.getRight() + getMargin1(c, true, false), c.getBottom() + getMargin1(c, false, false), paint); } } super.onDebugDraw(canvas); } // Add/remove Loading tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java +0 −9 Original line number Diff line number Diff line Loading @@ -2,23 +2,14 @@ package com.android.test.layout; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.GridLayout; import android.widget.Space; import android.widget.TextView; import static android.text.InputType.TYPE_CLASS_TEXT; import static android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; import static android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD; import static android.widget.GridLayout.*; import static android.widget.GridLayout.FILL; import static android.widget.GridLayout.spec; public class LayoutInsetsTest extends Activity { public static View create(Context context) { Loading Loading
core/java/android/view/View.java +6 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; import android.text.TextUtils; import android.util.AttributeSet; import android.util.FloatProperty; Loading Loading @@ -16919,6 +16920,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal */ Drawable mAccessibilityFocusDrawable; /** * Show where the margins, bounds and layout bounds are for each view. */ final boolean mDebugLayout = SystemProperties.getBoolean("debug.layout", false); /** * Creates a new set of attachment information with the specified * events handler and thread.
core/java/android/view/ViewGroup.java +86 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Insets; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PointF; Loading Loading @@ -420,9 +422,15 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager initFromAttributes(context, attrs); } private boolean debugDraw() { return mAttachInfo != null && mAttachInfo.mDebugLayout; } private void initViewGroup() { // ViewGroup doesn't draw by default if (!debugDraw()) { setFlags(WILL_NOT_DRAW, DRAW_MASK); } mGroupFlags |= FLAG_CLIP_CHILDREN; mGroupFlags |= FLAG_CLIP_TO_PADDING; mGroupFlags |= FLAG_ANIMATION_DONE; Loading Loading @@ -2650,6 +2658,52 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager return b; } private static void drawRect(Canvas canvas, int x1, int y1, int x2, int y2, Paint paint) { canvas.drawRect(x1, y1, x2 - 1, y2 - 1, paint); } /** * @hide */ protected void onDebugDrawMargins(Canvas canvas) { for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); c.getLayoutParams().onDebugDraw(this, canvas); } } /** * @hide */ protected void onDebugDraw(Canvas canvas) { Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); // Draw optical bounds if (getLayoutMode() == LAYOUT_BOUNDS) { paint.setColor(Color.RED); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); Insets insets = c.getLayoutInsets(); drawRect(canvas, c.getLeft() + insets.left, c.getTop() + insets.top, c.getRight() - insets.right, c.getBottom() - insets.bottom, paint); } } // Draw bounds paint.setColor(Color.BLUE); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); drawRect(canvas, c.getLeft(), c.getTop(), c.getRight(), c.getBottom(), paint); } // Draw margins onDebugDrawMargins(canvas); } /** * {@inheritDoc} */ Loading Loading @@ -2741,6 +2795,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } if (debugDraw()) { onDebugDraw(canvas); } if (clipToPadding) { canvas.restoreToCount(saveCount); } Loading Loading @@ -5468,6 +5526,17 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager + sizeToString(width) + ", height=" + sizeToString(height) + " }"; } /** * Use {@code canvas} to draw suitable debugging annotations for these LayoutParameters. * * @param view the view that contains these layout parameters * @param canvas the canvas on which to draw * * @hide */ public void onDebugDraw(View view, Canvas canvas) { } /** * Converts the specified size to a readable String. * Loading Loading @@ -5718,6 +5787,22 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager break; } } /** * @hide */ @Override public void onDebugDraw(View view, Canvas canvas) { Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.MAGENTA); drawRect(canvas, view.getLeft() - leftMargin, view.getTop() - topMargin, view.getRight() + rightMargin, view.getBottom() + bottomMargin, paint); } } /* Describes a touched view and the ids of the pointers that it has captured. Loading
core/java/android/widget/GridLayout.java +39 −46 Original line number Diff line number Diff line Loading @@ -30,8 +30,8 @@ import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import com.android.internal.R; import android.widget.RemoteViews.RemoteView; import com.android.internal.R; import java.lang.reflect.Array; import java.util.ArrayList; Loading Loading @@ -209,7 +209,6 @@ public class GridLayout extends ViewGroup { // Misc constants static final String TAG = GridLayout.class.getName(); static final boolean DEBUG = false; static final int MAX_SIZE = 100000; static final int DEFAULT_CONTAINER_MARGIN = 0; static final int UNINITIALIZED_HASH = 0; Loading Loading @@ -249,9 +248,6 @@ public class GridLayout extends ViewGroup { */ public GridLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if (DEBUG) { setWillNotDraw(false); } defaultGap = context.getResources().getDimensionPixelOffset(R.dimen.default_gap); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.GridLayout); try { Loading Loading @@ -772,15 +768,29 @@ public class GridLayout extends ViewGroup { } } private static void drawRect(Canvas canvas, int x1, int y1, int x2, int y2, Paint paint) { canvas.drawRect(x1, y1, x2 - 1, y2 - 1, paint); /** * @hide */ @Override protected void onDebugDrawMargins(Canvas canvas) { // Apply defaults, so as to remove UNDEFINED values LayoutParams lp = new LayoutParams(); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); lp.setMargins( getMargin1(c, true, true), getMargin1(c, false, true), getMargin1(c, true, false), getMargin1(c, false, false)); lp.onDebugDraw(c, canvas); } } /** * @hide */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (DEBUG) { protected void onDebugDraw(Canvas canvas) { int height = getHeight() - getPaddingTop() - getPaddingBottom(); int width = getWidth() - getPaddingLeft() - getPaddingRight(); Loading @@ -804,24 +814,7 @@ public class GridLayout extends ViewGroup { } } // Draw bounds paint.setColor(Color.BLUE); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); drawRect(canvas, c.getLeft(), c.getTop(), c.getRight(), c.getBottom(), paint); } // Draw margins paint.setColor(Color.MAGENTA); for (int i = 0; i < getChildCount(); i++) { View c = getChildAt(i); drawRect(canvas, c.getLeft() - getMargin1(c, true, true), c.getTop() - getMargin1(c, false, true), c.getRight() + getMargin1(c, true, false), c.getBottom() + getMargin1(c, false, false), paint); } } super.onDebugDraw(canvas); } // Add/remove Loading
tests/GridLayoutTest/src/com/android/test/layout/LayoutInsetsTest.java +0 −9 Original line number Diff line number Diff line Loading @@ -2,23 +2,14 @@ package com.android.test.layout; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.GridLayout; import android.widget.Space; import android.widget.TextView; import static android.text.InputType.TYPE_CLASS_TEXT; import static android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; import static android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD; import static android.widget.GridLayout.*; import static android.widget.GridLayout.FILL; import static android.widget.GridLayout.spec; public class LayoutInsetsTest extends Activity { public static View create(Context context) { Loading