diff options
author | Nicolas Roard <nicolasroard@google.com> | 2018-03-20 18:24:23 -0700 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2018-03-20 18:24:23 -0700 |
commit | a04d97f1a846d8b3963646e1b920e3c9be09c1cf (patch) | |
tree | 1c6a4e147f2deffcf3968b323b4a6d7cd73f3953 | |
parent | dd8e1ade01a0b7aebce2d7373c54071848759653 (diff) | |
download | sherpa-a04d97f1a846d8b3963646e1b920e3c9be09c1cf.tar.gz |
Fixed issue with gone element in chains (wrongly adding margin)
Test: added ChainTest.testPackChainGone() and check175 in sherpa.
Change-Id: Iba48dd3def8f004abefd8809fbaecc457ea331be
Fixes: 73730675
-rw-r--r-- | solver/src/main/java/android/support/constraint/solver/widgets/Chain.java | 2 | ||||
-rw-r--r-- | solver/src/test/java/android/support/constraint/solver/ChainTest.java | 35 |
2 files changed, 36 insertions, 1 deletions
diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java b/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java index 2202cc7..4fb3a24 100644 --- a/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java +++ b/solver/src/main/java/android/support/constraint/solver/widgets/Chain.java @@ -153,7 +153,7 @@ class Chain { int strength = SolverVariable.STRENGTH_LOW; int margin = begin.getMargin(); - if (begin.mTarget != null && widget != first) { + if (begin.mTarget != null && widget != first && widget.getVisibility() != GONE) { margin += begin.mTarget.getMargin(); } diff --git a/solver/src/test/java/android/support/constraint/solver/ChainTest.java b/solver/src/test/java/android/support/constraint/solver/ChainTest.java index 8fc02d4..ee4354e 100644 --- a/solver/src/test/java/android/support/constraint/solver/ChainTest.java +++ b/solver/src/test/java/android/support/constraint/solver/ChainTest.java @@ -28,6 +28,41 @@ import static org.testng.Assert.assertEquals; public class ChainTest { @Test + public void testPackChainGone() { + ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600); + ConstraintWidget A = new ConstraintWidget(100, 20); + ConstraintWidget B = new ConstraintWidget(100, 20); + ConstraintWidget C = new ConstraintWidget(100, 20); + root.setDebugName("root"); + A.setDebugName("A"); + B.setDebugName("B"); + C.setDebugName("C"); + root.add(A); + root.add(B); + root.add(C); + + A.connect(ConstraintAnchor.Type.LEFT, root, ConstraintAnchor.Type.LEFT, 100); + A.connect(ConstraintAnchor.Type.RIGHT, B, ConstraintAnchor.Type.LEFT); + B.connect(ConstraintAnchor.Type.LEFT, A, ConstraintAnchor.Type.RIGHT); + B.connect(ConstraintAnchor.Type.RIGHT, C, ConstraintAnchor.Type.LEFT); + C.connect(ConstraintAnchor.Type.LEFT, B, ConstraintAnchor.Type.RIGHT); + C.connect(ConstraintAnchor.Type.RIGHT, root, ConstraintAnchor.Type.RIGHT, 20); + + A.setHorizontalChainStyle(ConstraintWidget.CHAIN_PACKED); + B.setGoneMargin(ConstraintAnchor.Type.RIGHT, 100); + C.setVisibility(ConstraintWidget.GONE); + + root.layout(); + System.out.println("A: " + A + " B: " + B + " C: " + C); + assertEquals(A.getLeft(), 200); + assertEquals(B.getLeft(), 300); + assertEquals(C.getLeft(), 400); + assertEquals(A.getWidth(), 100); + assertEquals(B.getWidth(), 100); + assertEquals(C.getWidth(), 0); + } + + @Test public void testSpreadInsideChain2() { ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600); ConstraintWidget A = new ConstraintWidget(100, 20); |