OSDN Git Service

Make sure DragLayer layout params are of the correct type
authorAdam Cohen <adamcohen@google.com>
Tue, 28 Oct 2014 23:16:02 +0000 (16:16 -0700)
committerAdam Skory <skory@google.com>
Tue, 28 Oct 2014 23:46:52 +0000 (23:46 +0000)
bug 18141419

CP of bc927f9c24001e250622ca9a2547ee5b65baef58
Change-Id: I50695a62cf9e1f25c054ac2c7197cd056d54cfae

src/com/android/launcher3/DragLayer.java
src/com/android/launcher3/InsettableFrameLayout.java

index 79d4278..a352b79 100644 (file)
@@ -38,6 +38,8 @@ import android.view.animation.Interpolator;
 import android.widget.FrameLayout;
 import android.widget.TextView;
 
+import com.android.launcher3.InsettableFrameLayout.LayoutParams;
+
 import java.util.ArrayList;
 
 /**
@@ -410,17 +412,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;
         }
index 1c3d5a1..7343bf6 100644 (file)
@@ -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) {