This repository was archived by the owner on Dec 27, 2024. It is now read-only.
-
Couldn't load subscription status.
- 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.