From 5b2b779ecf53f54da396672ac50ddfbf2e1f97b4 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Tue, 28 Oct 2014 16:16:02 -0700 Subject: Make sure DragLayer layout params are of the correct type bug 18141419 Change-Id: I50695a62cf9e1f25c054ac2c7197cd056d54cfae --- src/com/android/launcher3/DragLayer.java | 36 +++++++++++++++++++--- .../android/launcher3/InsettableFrameLayout.java | 2 +- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java index 156df7d21..a93a9e35c 100644 --- a/src/com/android/launcher3/DragLayer.java +++ b/src/com/android/launcher3/DragLayer.java @@ -39,6 +39,8 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; +import com.android.launcher3.InsettableFrameLayout.LayoutParams; + import java.util.ArrayList; /** @@ -418,17 +420,43 @@ public class DragLayer extends InsettableFrameLayout { return mDragController.dispatchUnhandledMove(focused, direction); } - public static class LayoutParams extends FrameLayout.LayoutParams { + @Override + public LayoutParams generateLayoutParams(AttributeSet attrs) { + return new LayoutParams(getContext(), attrs); + } + + @Override + protected LayoutParams generateDefaultLayoutParams() { + return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + } + + // Override to allow type-checking of LayoutParams. + @Override + protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { + return p instanceof LayoutParams; + } + + @Override + protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { + return new LayoutParams(p); + } + + public static class LayoutParams extends InsettableFrameLayout.LayoutParams { public int x, y; public boolean customPosition = false; - /** - * {@inheritDoc} - */ + public LayoutParams(Context c, AttributeSet attrs) { + super(c, attrs); + } + public LayoutParams(int width, int height) { super(width, height); } + public LayoutParams(ViewGroup.LayoutParams lp) { + super(lp); + } + public void setWidth(int width) { this.width = width; } diff --git a/src/com/android/launcher3/InsettableFrameLayout.java b/src/com/android/launcher3/InsettableFrameLayout.java index 1c3d5a189..7343bf686 100644 --- a/src/com/android/launcher3/InsettableFrameLayout.java +++ b/src/com/android/launcher3/InsettableFrameLayout.java @@ -63,7 +63,7 @@ public class InsettableFrameLayout extends FrameLayout implements return new LayoutParams(p); } - class LayoutParams extends FrameLayout.LayoutParams { + public static class LayoutParams extends FrameLayout.LayoutParams { boolean ignoreInsets = false; public LayoutParams(Context c, AttributeSet attrs) { -- cgit v1.2.3