This repository was archived by the owner on Dec 27, 2024. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork 172
XML to JSON and DSL for ConstraintSet attributes
Shane Wong edited this page Oct 28, 2022 · 23 revisions
XML for ConstraintSet has many attributes because of the way XML works. Many of them have been combined for example android:layout_width, layout_constraintWidth, layout_constrainedWidth, layout_constraintWidth_min, layout_constraintWidth_max, layout_constraintWidth_percent, and layout_constraintDimensionRatio are all combined in width:
{ width: 23, width: 'spread', width: { value: 'wrap', max: 300 } } | XML | JSON | DSL | Example |
|---|---|---|---|
| android:orientation | 1* | ||
| android:id | 2* | createRefFor(...) | |
| android:visibility | visibility | visibility = | Visibility.kt (DSL) test.kt (JSON) |
| visibilityMode | N/A | ||
| android:alpha | alpha | alpha = | Visibility.kt (DSL) test.kt (JSON) |
| android:rotation | rotationZ | rotationZ = | Transforms.kt (DSL) test.kt (JSON) |
| android:rotationX | rotationX | rotationX = | Transforms.kt (DSL) VTest02.kt (JSON) |
| android:rotationY | rotationY | rotationY = | MotionCarouselDemos.kt (DSL) VTest02.kt (JSON) |
| android:scaleX | scaleX | scaleX = | CollapsibleToolbar.kt (DSL) test.kt (JSON) |
| android:scaleY | scaleY | scaleY = | CollapsibleToolbar.kt (DSL) test.kt (JSON) |
| pivotAnchor | TBD | ||
| android:transformPivotX | pivotX | pivotX = | Transforms.kt (DSL) test.kt (JSON) |
| android:transformPivotY | pivotY | pivotY = | MISSING (DSL) test.kt (JSON) |
| transformPivotTarget | TBD | ||
| android:translationX | translationX | translationX = | Transforms.kt (DSL) test.kt (JSON) |
| android:translationY | translationY | translationY = | Transforms.kt (DSL) CyclesDemo.kt (JSON) |
| android:translationZ | translationZ | translationZ = | Transforms.kt (DSL) test.kt (JSON) |
| android:elevation | translationZ | elevation = | MotionStatesExample.kt (DSL) test.kt (JSON) |
| android:layout_width | width | Modifier.width() Modifier.fillMaxWidth() Modifier.fillMaxSize() | AttributesDemo.kt (DSL) N/A (JSON) |
| android:layout_height | height | Modifier.height() Modifier.fillMaxHeight() Modifier.fillMaxSize() | AttributesDemo.kt (DSL) N/A (JSON) |
| layout_constraintWidth | Deprecated | Deprecated | |
| layout_constraintHeight | Deprecated | Deprecated | |
| android:layout_marginStart | start | start.linkTo() | Chains.kt (DSL) test.kt (JSON) |
| android:layout_marginBottom | bottom | bottom.linkTo() | Chains.kt (DSL) test.kt (JSON) |
| android:layout_marginTop | top | top.linkTo() | Chains.kt (DSL) test.kt (JSON) |
| android:layout_marginEnd | end | end.linkTo() | Chains.kt (DSL) test.kt (JSON) |
| android:layout_marginLeft | left | left.linkTo() | BarrierTest01.kt (JSON) |
| android:layout_marginRight | right | right.linkTo() | BarrierTest01.kt (JSON) |
| layout_constraintCircle | circular | circular() | test4.kt (DSL) test.kt (JSON) |
| layout_constraintCircleRadius | circular | circular() | test4.kt (DSL) test.kt (JSON) |
| layout_constraintCircleAngle | circular | circular() | test4.kt (DSL) test.kt (JSON) |
| layout_constraintGuide_begin | type: 'h/vGuideline' | createGuidelineFromStart() createGuidelineFromTop() createGuidelineFromAbsoluteLeft() | test.kt (DSL) VTest.kt (JSON) |
| layout_constraintGuide_end | type: 'h/vGuideline' | createGuidelineFromEnd() createGuidelineFromBottom() createGuidelineFromAbsoluteRight() | test.kt (DSL) VTest.kt (JSON) |
| layout_constraintGuide_percent | type: 'h/vGuideline' | createGuidelineFromStart() createGuidelineFromTop() createGuidelineFromAbsoluteLeft() createGuidelineFromEnd() createGuidelineFromBottom() createGuidelineFromAbsoluteRight() | Guidelines.kt (DSL) DslTest.java (JSON) |
| layout_constraintLeft_toLeftOf | left | absoluteLeft.linkTo() (?) | rtl.kt (DSL) VTest02.kt (JSON) |
| layout_constraintLeft_toRightOf | left | absoluteLeft.linkTo() (?) | MISSING (DSL) FlowDemo.kt (JSON) |
| layout_constraintRight_toRightOf | right | absoluteRight.linkTo() (?) | MISSING (DSL) VTest02.kt (JSON) |
| layout_constraintRight_toLeftOf | right | absoluteRight.linkTo() (?) | MISSING (DSL) MISSING (JSON) |
| layout_constraintTop_toTopOf | top | top.linkTo() | test.kt (DSL) test.kt (JSON) |
| layout_constraintTop_toBottomOf | top | top.linkTo() | test.kt (DSL) test.kt (JSON) |
| layout_constraintBottom_toTopOf | bottom | bottom.linkTo() | test.kt (DSL) test.kt (JSON) |
| layout_constraintBottom_toBottomOf | bottom | bottom.linkTo() | test.kt (DSL) test.kt (JSON) |
| layout_constraintBaseline_toBaselineOf | baseline | baseline.linkTo() | MotionModifierListDemo.kt (DSL) MISSING (JSON) |
| layout_constraintBaseline_toTopOf | baseline | baseline.linkTo() | MISSING (DSL) VTest02.kt (JSON) |
| layout_constraintBaseline_toBottomOf | baseline | baseline.linkTo() | MISSING (DSL) MISSING (JSON) |
| layout_constraintStart_toEndOf | start | start.linkTo() | MotionModifierListDemo.kt (DSL) MotionComposeExamples.kt (JSON) |
| layout_constraintStart_toStartOf | start | start.linkTo() | MotionModifierListDemo.kt (DSL) MotionComposeExamples.kt (JSON) |
| layout_constraintEnd_toStartOf | end | end.linkTo() | MotionModifierListDemo.kt (DSL) MotionComposeExamples.kt (JSON) |
| layout_constraintEnd_toEndOf | end | end.linkTo() | MotionModifierListDemo.kt (DSL) MotionComposeExamples.kt (JSON) |
| layout_goneMarginLeft | left | left.linkTo()* | MISSING (DSL) test.kt (JSON) |
| layout_goneMarginTop | top | top.linkTo()* | Chains.kt (DSL) DslTest.java (JSON) |
| layout_goneMarginRight | right | right.linkTo()* | MISSING (DSL) DslTest.java (JSON) |
| layout_goneMarginBottom | bottom | bottom.linkTo()* | Chains.kt (DSL) DslTest.java (JSON) |
| layout_goneMarginStart | start | start.linkTo()* | Chains.kt (DSL) DslTest.java (JSON) |
| layout_goneMarginEnd | end | end.linkTo()* | Chains.kt (DSL) test.kt (JSON) |
| layout_goneMarginBaseline | baseline | baseline.linkTo()* | MISSING (DSL) MISSING (JSON) |
| layout_marginBaseline | baseline | baseline.linkTo()* | MISSING (DSL) VTest02.kt (JSON) |
| layout_constrainedWidth (?) | width | width = | test.kt (DSL) MISSING (JSON) |
| layout_constrainedHeight (?) | height | height = | preferWrap.kt (DSL) MISSING (JSON) |
| layout_constraintHorizontal_bias | hBias | linkTo() | CardSample.kt (DSL) VTest02.kt (JSON) |
| layout_constraintVertical_bias | vBias | linkTo() | PreferWrap.kt (DSL) VTest02.kt (JSON) |
| layout_constraintWidth_default (?) | width | width = | (DSL) (JSON) |
| layout_constraintHeight_default (?) | height | height = | (DSL) (JSON) |
| layout_constraintWidth_min (?) | width | width = Dimension .fillToConstraints.atLeast() | MISSING (DSL) VTest02.kt (JSON) |
| layout_constraintWidth_max (?) | width | width = Dimension .fillToConstraints.atMost() | Dimensions.kt (DSL) VTest02.kt (JSON) |
| layout_constraintWidth_percent | width | width = | MISSING (DSL) MISSING (JSON) |
| layout_constraintHeight_min (?) | height | height = Dimension .fillToConstraints.atLeast() | MISSING (DSL) MISSING (JSON) |
| layout_constraintHeight_max (?) | height | height = Dimension .fillToConstraints.atMost() | Dimensions.kt (DSL) MISSING (JSON) |
| layout_constraintHeight_percent | height | height = | Dimensions.kt (DSL) MISSING (JSON) |
| layout_constraintDimensionRatio | height/width | width = Dimension.value(100.dp) height = Dimension.ratio("x:y") | Ratio.kt (DSL) MISSING (JSON) |
| layout_constraintHorizontal_weight | hBias | horizontalChainWeight = | Chains.kt (DSL) test.kt (JSON) |
| layout_constraintVertical_weight | vBias | verticalChainWeight = | Chains.kt (DSL) test.kt (JSON) |
| layout_constraintHorizontal_chainStyle | type: 'hChain' | createHorizontalChain() | Chains.kt (DSL) DslTest.java (JSON) |
| layout_constraintVertical_chainStyle | type: 'vChain' | createVerticalChain() | Chains.kt (DSL) DslTest.java (JSON) |
| layout_wrapBehaviorInParent | ??? | ||
| barrierDirection | type: 'barrier' direction: 'start' | createStartBarrier() createAbsoluteLeftBarrier() createTopBarrier() createEndBarrier() createAbsoluteRightBarrier() createBottomBarrier() | Barriers.kt (DSL) Barriers.kt (JSON) |
| barrierAllowsGoneWidgets | v/hBarrier* | createStartBarrier* N/A(?) | |
| flow_wrapMode | wrap | wrapMode = | FlowDslDemo.kt (DSL) FlowDemo2.kt (JSON) |
| orientation (Flow) | type | flowVertically = | FlowDslDemo.kt (DSL) FlowDemo2.kt (JSON) |
| flow_horizontalStyle | hStyle | horizontalStyle = | FlowDslDemo.kt (DSL) FlowDemo2.k (JSON) |
| flow_firstHorizontalStyle | hStyle | MISSING first last | FlowDemo2.kt (JSON) |
| flow_lastHorizontalStyle | hStyle | MISSING first last | FlowDemo2.kt (JSON) |
| flow_verticalStyle | vStyle | verticalStyle = | FlowDslDemo.kt (DSL) FlowDemo2.kt (JSON) |
| flow_firstVerticalStyle | vStyle | MISSING first last | FlowDemo2.kt (JSON) |
| flow_lastVerticalStyle | vStyle | MISSING first last | FlowDemo2.kt (JSON) |
| flow_horizontalBias | hBias/hFlowBias | horizontalFlowBias = | FlowDslDemo.kt (DSL) FlowDemo2.kt (JSON) |
| flow_verticalBias | vBias/vFlowBias | verticalFlowBias = | FlowDslDemo.kt (DSL) FlowDemo2.kt (JSON) |
| flow_horizontalGap | hGap | horizontalGap = | FlowDslDemo.kt (DSL) FlowDemo.kt (JSON) |
| flow_verticalGap | vGap | verticalGap = | FlowDslDemo.kt (DSL) FlowDemo.kt (JSON) |
| flow_horizontalAlign | hAlign | horizontalAlign = | FlowDemo4.kt (JSON) |
| flow_verticalAlign | vAlign | verticalAlign = | FlowDemo4.kt (JSON) |
| flow_maxElementsWrap | maxElement | maxElement = | FlowDslDemo.kt (DSL) FlowDemo4.kt (JSON) |
| constraint_referenced_ids | contains | FlowDslDemo.kt (DSL) FlowDemo.kt (JSON) | |
| constraint_referenced_tags | |||
| android:maxHeight | (DSL) (JSON) | ||
| android:maxWidth | (DSL) (JSON) | ||
| android:minHeight | (DSL) (JSON) | ||
| android:minWidth | (DSL) (JSON) | ||
| chainUseRtl | Not implemented | createHorizontalChain() | |
| animateRelativeTo. | motion:{ relativeTo: 'id' } | MISSING (DSL) ConstraintMotionProps.kt (JSON) | |
| animateCircleAngleTo | MotionLayout* | (DSL) (JSON) | |
| transitionEasing | motion { easing: 'overshoot' } | MISSING (DSL) ConstraintMotionProps.kt (JSON) | |
| pathMotionArc | motion { pathMotionArc: | LaMotion.kt (DSL) AttributesDemo.kt (JSON) | |
| polarRelativeTo | motion:{ relativeTo: 4} | (DSL) (JSON) | |
| motionPathRotate | motion:{ } | (DSL) (JSON) | |
| transitionPathRotate | motion:{ ????: 4} | (DSL) (JSON) | |
| drawPath | MotionLayout( debug =... , ) | MISSING (DSL) Demo3.kt (JSON) | |
| motionProgress | Not implemented | MotionLayout( progress = 0.4f, ) | test.kt (DSL) MISSING (JSON) |
| layout_constraintTag | code only | (DSL) (JSON) | |
| motionStagger | motion:{ stagger: 4} | MISSING (DSL) ConstraintMotionProps.kt (JSON) | |
| quantizeMotionSteps (?) | motion:{ quantize: [steps, easing, phase]} | MISSING (DSL) test.kt (JSON) | |
| quantizeMotionPhase (?) | motion:{ quantize: int } | (DSL) ConstraintMotionProps.kt (JSON) | |
| quantizeMotionInterpolator | motion:{ quantize: [steps, easing, phase]} | (DSL) ConstraintMotionProps.kt (JSON) |
1* - By convention helpers will be explicitly vertical or horizontal (vChain or hChain) 2* - The id is usually the label MotionLayout* - These features of MotionLayout are not implemented.