diff options
author | Nicolas Roard <nicolasroard@google.com> | 2018-06-04 12:54:32 -0700 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2018-06-04 12:54:32 -0700 |
commit | 406e6406c502b4467775a417155e7a4b92e787f7 (patch) | |
tree | 8f7cb7dff3293246d289dafefb29ad519e4d0046 | |
parent | e3b523ed7c0a98486941063b9ca72bb25c0f5f8c (diff) | |
download | sherpa-406e6406c502b4467775a417155e7a4b92e787f7.tar.gz |
Correctly take in account max dimension for ratio
Fixes: 79962504
Test: added check 201
added RatioTest.testRatioMax()
Change-Id: I5c86a76c630f3f0c7634fcde4da09ab03f9c14ae
-rw-r--r-- | solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java | 4 | ||||
-rw-r--r-- | solver/src/test/java/android/support/constraint/solver/RatioTest.java | 27 |
2 files changed, 29 insertions, 2 deletions
diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java index 0302056..a5e143d 100644 --- a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java +++ b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java @@ -2647,9 +2647,9 @@ public class ConstraintWidget { applyCentering = true; applyBoundsCheck = true; int strength = SolverVariable.STRENGTH_HIGHEST; - if (!useRatio && mResolvedDimensionRatioSide != UNKNOWN) { + if (!useRatio && mResolvedDimensionRatioSide != UNKNOWN && matchMaxDimension <= 0) { // useRatio is true if the side we base ourselves on for the ratio is this one - // in that case, we need to have a stronger constraint. + // if that's not the case, we need to have a stronger constraint. strength = SolverVariable.STRENGTH_FIXED; } system.addEquality(begin, beginTarget, beginAnchor.getMargin(), strength); diff --git a/solver/src/test/java/android/support/constraint/solver/RatioTest.java b/solver/src/test/java/android/support/constraint/solver/RatioTest.java index 3ce404b..16b745a 100644 --- a/solver/src/test/java/android/support/constraint/solver/RatioTest.java +++ b/solver/src/test/java/android/support/constraint/solver/RatioTest.java @@ -26,6 +26,33 @@ import static org.testng.Assert.assertEquals; public class RatioTest { @Test + public void testRatioMax() { + ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 1000, 1000); + ConstraintWidget A = new ConstraintWidget(100, 100); + root.setDebugName("root"); + root.add(A); + A.setDebugName("A"); + + A.connect(ConstraintAnchor.Type.LEFT, root, ConstraintAnchor.Type.LEFT); + + A.connect(ConstraintAnchor.Type.TOP, root, ConstraintAnchor.Type.TOP); + A.connect(ConstraintAnchor.Type.BOTTOM, root, ConstraintAnchor.Type.BOTTOM); + + A.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT); + A.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT); + A.setVerticalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_RATIO, 0, 150, 0); + A.setDimensionRatio("W,16:9"); + + root.setOptimizationLevel(Optimizer.OPTIMIZATION_NONE); + root.layout(); + + System.out.println("a) root: " + root + " A: " + A); + assertEquals(A.getWidth(), 267); + assertEquals(A.getHeight(), 150); + assertEquals(A.getTop(), 425); + } + + @Test public void testRatioSingleTarget() { ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 1000, 1000); ConstraintWidget A = new ConstraintWidget(100, 100); |