diff options
author | Nicolas Roard <nicolasroard@google.com> | 2018-04-11 13:45:04 -0700 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2018-04-11 14:30:39 -0700 |
commit | 01e844291fe0fcfb64bc69b876dedf89c7d5773a (patch) | |
tree | e274d08b3287ee2291e4a7fa97cf5386071d47ac | |
parent | fc2b3a677298c422b210dd23892d0d16e7a9de2a (diff) | |
download | sherpa-01e844291fe0fcfb64bc69b876dedf89c7d5773a.tar.gz |
Fixed issue 77754178
Test: Added check 181 in sherpa + ChainTest.testSpreadChainGone()
Change-Id: I373c8171c00faaf1c7fa96ce3976c4cbfe4779f0
Fixes: 77754178
-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 | 34 |
2 files changed, 36 insertions, 0 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 4fb3a24..e8615fb 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 @@ -316,6 +316,8 @@ class Chain { SolverVariable beginTarget = beginAnchor.mTarget != null ? beginAnchor.mTarget.mSolverVariable : null; if (previousVisibleWidget != widget) { beginTarget = previousVisibleWidget.mListAnchors[offset + 1].mSolverVariable; + } else if (widget == firstVisibleWidget && previousVisibleWidget == widget) { + beginTarget = first.mListAnchors[offset].mTarget != null ? first.mListAnchors[offset].mTarget.mSolverVariable : null; } ConstraintAnchor beginNextAnchor = null; 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 6b33d1a..d8c6c9a 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,40 @@ import static org.testng.Assert.assertEquals; public class ChainTest { @Test + public void testSpreadChainGone() { + 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); + 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); + + A.setHorizontalChainStyle(ConstraintWidget.CHAIN_SPREAD); + A.setVisibility(ConstraintWidget.GONE); + + root.layout(); + System.out.println("A: " + A + " B: " + B + " C: " + C); + assertEquals(A.getLeft(), 0); + assertEquals(A.getRight(), 0); + assertEquals(B.getLeft(), 133); + assertEquals(B.getRight(), 233); + assertEquals(C.getLeft(), 367); + assertEquals(C.getRight(), 467); + } + + @Test public void testPackChainGone() { ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600); ConstraintWidget A = new ConstraintWidget(100, 20); |