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

Commit 363a5d1f authored by Alan Viverette's avatar Alan Viverette Committed by android-build-merger
Browse files

Merge "Always assign leftover pixels to last weighted child" into nyc-dev am:...

Merge "Always assign leftover pixels to last weighted child" into nyc-dev am: a11c21b4 am: 9204810e
am: 8902b962

* commit '8902b962':
  Always assign leftover pixels to last weighted child

Change-Id: Ib229a7cc5550942eb094c8d549711129af8594a0
parents 33e5d34b 8902b962
Loading
Loading
Loading
Loading
+24 −6
Original line number Diff line number Diff line
@@ -730,6 +730,7 @@ public class LinearLayout extends ViewGroup {
        final int baselineChildIndex = mBaselineAlignedChildIndex;        
        final boolean useLargestChild = mUseLargestChild;

        int lastWeightedChildIndex = -1;
        int largestChildHeight = Integer.MIN_VALUE;
        int consumedExcessSpace = 0;

@@ -754,8 +755,10 @@ public class LinearLayout extends ViewGroup {
            }

            final LayoutParams lp = (LayoutParams) child.getLayoutParams();

            if (lp.weight > 0) {
                totalWeight += lp.weight;
                lastWeightedChildIndex = i;
            }

            final boolean useExcessSpace = lp.height == 0 && lp.weight > 0;
            if (heightMode == MeasureSpec.EXACTLY && useExcessSpace) {
@@ -909,7 +912,13 @@ public class LinearLayout extends ViewGroup {
                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
                final float childWeight = lp.weight;
                if (childWeight > 0) {
                    final int share = (int) (childWeight * remainingExcess / remainingWeightSum);
                    final int share;
                    if (i == lastWeightedChildIndex) {
                        share = remainingExcess;
                    } else {
                        share = (int) (childWeight * remainingExcess / remainingWeightSum);
                    }

                    remainingExcess -= share;
                    remainingWeightSum -= childWeight;

@@ -1070,6 +1079,7 @@ public class LinearLayout extends ViewGroup {
        
        final boolean isExactly = widthMode == MeasureSpec.EXACTLY;

        int lastWeightedChildIndex = -1;
        int largestChildWidth = Integer.MIN_VALUE;
        int usedExcessSpace = 0;

@@ -1094,8 +1104,10 @@ public class LinearLayout extends ViewGroup {
            }

            final LayoutParams lp = (LayoutParams) child.getLayoutParams();

            if (lp.weight > 0) {
                totalWeight += lp.weight;
                lastWeightedChildIndex = i;
            }

            final boolean useExcessSpace = lp.width == 0 && lp.weight > 0;
            if (widthMode == MeasureSpec.EXACTLY && useExcessSpace) {
@@ -1294,7 +1306,13 @@ public class LinearLayout extends ViewGroup {
                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
                final float childWeight = lp.weight;
                if (childWeight > 0) {
                    final int share = (int) (childWeight * remainingExcess / remainingWeightSum);
                    final int share;
                    if (i == lastWeightedChildIndex) {
                        share = remainingExcess;
                    } else {
                        share = (int) (childWeight * remainingExcess / remainingWeightSum);
                    }

                    remainingExcess -= share;
                    remainingWeightSum -= childWeight;