Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 885c50b6 authored by Yigit Boyar's avatar Yigit Boyar
Browse files

Fix generate layout params to preserve margins

This CL fixes a common bug in framework's widgets where they
were not converting a child's margin layout params properly.

The CL fixes, FrameLayout, RelativeLayout, GridLayout and
LinearLayout.

Bug: 27785449
Change-Id: Icecd9181ff82107e412174fe152f35d32d36b2e6
parent fb811aaf
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -400,8 +400,14 @@ public class FrameLayout extends ViewGroup {
    }

    @Override
    protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
        return new LayoutParams(p);
    protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
        if (lp instanceof LayoutParams) {
            return new LayoutParams((LayoutParams) lp);
        } else if (lp instanceof MarginLayoutParams) {
            return new LayoutParams((MarginLayoutParams) lp);
        } else {
            return new LayoutParams(lp);
        }
    }

    @Override
+8 −2
Original line number Diff line number Diff line
@@ -867,8 +867,14 @@ public class GridLayout extends ViewGroup {
    }

    @Override
    protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
        return new LayoutParams(p);
    protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
        if (lp instanceof LayoutParams) {
            return new LayoutParams((LayoutParams) lp);
        } else if (lp instanceof MarginLayoutParams) {
            return new LayoutParams((MarginLayoutParams) lp);
        } else {
            return new LayoutParams(lp);
        }
    }

    // Draw grid
+8 −2
Original line number Diff line number Diff line
@@ -1839,8 +1839,14 @@ public class LinearLayout extends ViewGroup {
    }

    @Override
    protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
        return new LayoutParams(p);
    protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
        if (lp instanceof LayoutParams) {
            return new LayoutParams((LayoutParams) lp);
        } else if (lp instanceof MarginLayoutParams) {
            return new LayoutParams((MarginLayoutParams) lp);
        } else {
            return new LayoutParams(lp);
        }
    }


+8 −2
Original line number Diff line number Diff line
@@ -1103,8 +1103,14 @@ public class RelativeLayout extends ViewGroup {
    }

    @Override
    protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
        return new LayoutParams(p);
    protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
        if (lp instanceof LayoutParams) {
            return new LayoutParams((LayoutParams) lp);
        } else if (lp instanceof MarginLayoutParams) {
            return new LayoutParams((MarginLayoutParams) lp);
        } else {
            return new LayoutParams(lp);
        }
    }

    /** @hide */