OSDN Git Service

Fix centering in FrameLayout when margins are specified.
authorRomain Guy <romainguy@android.com>
Wed, 17 Mar 2010 19:45:10 +0000 (12:45 -0700)
committerRomain Guy <romainguy@android.com>
Wed, 17 Mar 2010 19:45:10 +0000 (12:45 -0700)
Change-Id: I022f458c73967eacc9487bf8d8119999395efda9

core/java/android/widget/FrameLayout.java

index 65a4673..e27bb4f 100644 (file)
@@ -304,8 +304,8 @@ public class FrameLayout extends ViewGroup {
                             childLeft = parentLeft + lp.leftMargin;
                             break;
                         case Gravity.CENTER_HORIZONTAL:
-                            childLeft = parentLeft + (parentRight - parentLeft + lp.leftMargin +
-                                    lp.rightMargin - width) / 2;
+                            childLeft = parentLeft + (parentRight - parentLeft - width) / 2 +
+                                    lp.leftMargin - lp.rightMargin;
                             break;
                         case Gravity.RIGHT:
                             childLeft = parentRight - width - lp.rightMargin;
@@ -319,8 +319,8 @@ public class FrameLayout extends ViewGroup {
                             childTop = parentTop + lp.topMargin;
                             break;
                         case Gravity.CENTER_VERTICAL:
-                            childTop = parentTop + (parentBottom - parentTop + lp.topMargin +
-                                    lp.bottomMargin - height) / 2;
+                            childTop = parentTop + (parentBottom - parentTop - height) / 2 +
+                                    lp.topMargin - lp.bottomMargin;
                             break;
                         case Gravity.BOTTOM:
                             childTop = parentBottom - height - lp.bottomMargin;