Constraintlayout

Position and size widgets in a flexible way with relative positioning.

This table lists all the artifacts in the androidx.constraintlayout group.

Artifact Stable Release Release Candidate Beta Release Alpha Release
constraintlayout 2.1.4 - - 2.2.0-alpha13
constraintlayout-compose 1.0.1 - - 1.1.0-alpha13
constraintlayout-core 1.0.4 - - 1.1.0-alpha13

Declaring dependencies

To add a dependency on ConstraintLayout, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.

Add the dependencies for the artifacts you need in the build.gradle file for your app or module:

Groovy

dependencies {
    implementation "androidx.constraintlayout:constraintlayout:2.2.0-alpha13"
    // To use constraintlayout in compose
    implementation "androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha13"
}

Kotlin

dependencies {
    implementation("androidx.constraintlayout:constraintlayout:2.2.0-alpha13")
    // To use constraintlayout in compose
    implementation("androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha13")
}

For more information about dependencies, see Add build dependencies.

Feedback

Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

ConstraintLayout-compose, and ConstraintLayout-Core 1.1

Version 1.1.0-alpha13

October 4, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha13, androidx.constraintlayout:constraintlayout-compose-android:1.1.0-alpha13, and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha13 are released with no changes. Version 1.1.0-alpha13 contains these commits.

  • This release allows androidx.constraintlayout libraries to be ABI compatible with the latest Compose releases.

Version 1.1.0-alpha12

August 9, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha12, androidx.constraintlayout:constraintlayout-compose-android:1.1.0-alpha12, and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha12 are released. Version 1.1.0-alpha12 contains these commits.

API Changes

  • Added LayoutScopeMarker to Transition DSL. (If54ce)

Version 1.1.0-alpha11

July 26, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha11, androidx.constraintlayout:constraintlayout-compose-android:1.1.0-alpha11, and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha11 are released. Version 1.1.0-alpha11 contains these commits.

New Features

  • You may now provide an InvalidationStrategy to optimize invalidations in MotionLayout. Which will typically be the source of reduced performance. (Iada0c)
  • You may now use animateChanges = true when using ConstraintLayout with the inline Modifier DSL (Modifier.constrainAs), whenever a change on the constraints DSL is done ConstraintLayout will automatically animate to that new state. (I9abf1)
  • Enabled functionality for limitBoundsTo on OnSwipe. (I56522)

API Changes

  • Renamed TransitionScope.staggered to TransitionScope.maxStaggerDelay. (I0fd2d)

Bug Fixes

  • Fixed dragScale parameter from OnSwipe not working. (8bef26)
  • Fixed customColor in MotionScene not working properly with transparent colors. (81b2ac)
  • Fixed OnSwipe not announcing properly when it has stopped, also fixed initial velocity calculation for touchUp. (Ia5f6f)
  • Updated KDoc for ConstraintLayout Composable and Constraintset. (3bfe63)

Version 1.1.0-alpha10

May 24, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha10, androidx.constraintlayout:constraintlayout-compose-android:1.1.0-alpha10, and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha10 are released. Version 1.1.0-alpha10 contains these commits.

API Changes

  • MotionLayout Api is no longer experimental, this represents the initial set of stable Api for MotionLayout. (I288f4)
  • Removed MotionLayoutState. (Id3ac1)
  • You may now use DebugFlags for visual debugging: DebugFlags(showBounds = true). (Ic714b)
  • Changed extension variable Dp.asDimension to a method: Dp.asDimension(). (I2d6ef)
  • Staggered now supported in the MotionLayout DSL, define the maximum delay with TransitionScope.staggered, you may also use ConstrainScope.staggeredWeight (within a MotionSceneScope) to get a custom staggered order. (I70275)
  • Two changes made for the Grid helper: 1. paddingLeft and paddingRight to paddingStart and paddingEnd, respectively, and 2. update the format of gridSpans and gridSkip to an array of the Span and Skip objects to make it more structural. (Idd1eb)

Version 1.1.0-alpha09

March 22, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha09 and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha09 are released. Version 1.1.0-alpha09 contains these commits.

API Changes

  • Modifier.intermediateLayout now doesn't require an explicit LookaheadScope. The measure block in intermediateLayout has IntermediateMeasureScope as receiver, which provides convenient CoroutineScope, LookaheadScope and MeasureScope.
  • LookaheadLayout has been replaced by LookaheadScope, which is no longer a Layout. This allows child content in a LookaheadScope to be directly controlled by parent's MeasurePolicy. (Ibe2e5)
  • Easing.Cubic() can now take overshoot parameters. (I2d826)

Version 1.1.0-alpha08

March 8, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha08 and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha08 are released. Version 1.1.0-alpha08 contains these commits.

New Features

  • Lint checks added to suggest the use of Dimension.percent(1f) and LayoutReference.withChainParams() in cases where the typical patterns may lead to unpredictable behavior. (I62eb0, I03060)

API Changes

  • Enable ReverseSpanDirection and SpansOrderFirst flags for Grid Helper in Compose.
    1. ReverseSpanDirection: reverse the width and height specification for spans/skips.
    2. SpansOrderFirst: spans would respect the order of the widgets. (I6ad50)
  • Use Modifier.onStartEndBoundsChanged(...) to obtain local bounds of Composables in a MotionLayout that are not affected by animation. Useful for any ui interaction that requires layout information that may also trigger animations such as DragAndDrop. (I6b5f9)
  • Enable skips and spans of the Grid Helper in Compose (I917b6)

Bug Fixes

  • Fixed translation properties not applying expected values. (I961cd)

Version 1.1.0-alpha07

February 8, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha07 and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha07 are released. Version 1.1.0-alpha07 contains these commits.

New Features

  • Add new APIs to enable the Grid Helper in Compose using DSL (I1143b)

Bug Fixes

  • Fixed Wrap.Chain for Flow not laying out properly to the given maxElement parameter. (e1f2ed3)
  • Fixed start ConstraintSet not updating when changing Transition through MotionLayout(motionScene: MotionScene, progress: Float, transitionName: String). (17ffff1)
  • Fixed ConstraintSet not reflecting some changes when inheriting constraints through ConstraintSet(extendConstraintSet: ConstraintSet, description: ConstraintSetScope.() -> Unit).(740804b)

Version 1.1.0-alpha06

January 25, 2023

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha06 and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha06 are released. Version 1.1.0-alpha06 contains these commits.

New Features

  • Add new Apis to enable the Grid Helper in Compose with JSON representation which allows composables to be placed in a 2D grid. (I968ad)

API Changes

  • Add support for arc up and arc down modes Arc.Above and Arc.Below direction independent arc modes to MotionLayout (I184a9)
  • It is now possible to constrain a baseline anchor to top/bottom anchors and vice versa. (I54628)
  • Renamed MotionLayoutScope#motionProperties (including derivatives) to MotionLayoutScope#customProperties. This is to be consistent as when setting custom properties. (Ib34c9)
  • It’s now possible to create multiple references in ConstraintSet and MotionScene: val (box, text, button) = createRefsFor("box", "text","button"). Apply constraints to multiple elements with constrain(box, button, text). Within a ConstrainScope, you may now intuitively set a fixed dimension with Dp.asDimension: width = 10.dp.asDimension. (I021ec, Ia0960)
  • MotionScene() and Transition() methods are now non-Composable functions. The objects from these functions (including ConstraintSet) should now be properly comparable from each other. animateChanges = true in ConstraintLayout can now be used with only one ConstraintSet reference, as long as any of its properties changed on recomposition. (I7d22e)

Bug Fixes

  • Fixed issue where ConstraintLayout always triggered an unnecessary extra recomposition when helpers were changed. (Id83ad, b/222093277)
  • Fix behavior when using Intrinsics with ConstraintLayout & MotionLayout. (I487ae, b/220527863)
  • Fix not being able to remeasure when the content changes. (Ibfe8a, b/219091179)

Version 1.1.0-alpha05

December 7, 2022

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha05 and androidx.constraintlayout:constraintlayout-core:1.1.0-alpha05 are released. Version 1.1.0-alpha05 contains these commits.

New Features

  • Support custom KeyAttributes in DSL (b94e748)
  • Surface bias properties in ConstrainScope (32625d0)
  • Support custom parameters in chains (72a2e9e)
  • Add Macrobenchmark tests for MotionLayout in Compose (36f43bc)
  • For more information on changes in previous release in Compose, see wiki page

API Changes

  • Flip addConstraintSet and addTransition parameters (152facc)

Bug Fixes

Version 1.1.0-alpha01

May 20, 2022

androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha01 is released.

Please note MotionLayout API is experimental and requires opt in.

For more information, see what's New in Compose 1.1.0-alpha01 on GitHub.

Version 2.2

Version 2.2.0-alpha13

October 4, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha13 is released with no changes. Version 2.2.0-alpha13 contains these commits.

Version 2.2.0-alpha12

August 9, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha12 is released. Version 2.2.0-alpha12 contains these commits.

Version 2.2.0-alpha11

July 26, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha11 is released. Version 2.2.0-alpha11 contains these commits.

API Changes

  • Add a setter method to allow developers to programmatically set the value for mInfiniteCarousel (I0a8ca)

Version 2.2.0-alpha10

May 24, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha10 is released. Version 2.2.0-alpha10 contains these commits.

Bug Fixes

  • Fix a broken link of the MotionLayout doc. (51cbe88)

Version 2.2.0-alpha09

March 22, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha09 is released. Version 2.2.0-alpha09 contains these commits.

Version 2.2.0-alpha08

March 8, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha08 is released. Version 2.2.0-alpha08 contains these commits.

Version 2.2.0-alpha07

February 8, 2023

androidx.constraintlayout:constraintlayout:2.2.0-alpha07 is released. Version 2.2.0-alpha07 contains these commits.

Bug Fixes

  • Fix the ConstraintLayout page content missing issue. (I82e25)

Version 2.2.0-alpha05

December 7, 2022

androidx.constraintlayout:constraintlayout:2.2.0-alpha05 is released. Version 2.2.0-alpha05 contains these commits.

Bug Fixes

  • Fix leak in View Carousel (eb67b82)

Version 2.2.0-alpha01

May 20, 2022

androidx.constraintlayout:constraintlayout:2.2.0-alpha01 is released.

Includes a preview of the new Grid helper.

For more information, see what's New in 2.2.0-alpha01 on GitHub.

ConstraintLayout-compose 1.0

ConstraintLayout-compose 1.0 provides ConstraintLayout functionalities in Jetpack Compose.

Version 1.0.1

May 20, 2022

androidx.constraintlayout:constraintlayout-compose:1.0.1 is released.

Please note MotionLayout API is experimental and requires opt in.

For more information, see what's New in Compose 1.0.1 on GitHub.

Version 1.0.0

January 13, 2022

androidx.constraintlayout:constraintlayout-compose:1.0.0 is released.

Please note MotionLayout api is now experimental and requires opt in.

For more information, see the GitHub article What's New in 1.0 (Compose).

Version 1.0.0-rc02

November 16, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-rc02 is released.

For more information, see the GitHub article What's New in 1.0 (Compose).

Version 1.0.0-rc01

September 27, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-rc01 is released.

This release is the second beta. It is considered as feature complete, providing ConstraintLayout and MotionLayout for Compose.

For more information, see the GitHub article What's New in 1.0 (Compose).

Version 1.0.0-beta02

July 30, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-beta02 is released.

This release is the second beta. It is considered as feature complete, providing ConstraintLayout and MotionLayout for Compose.

For more information, see the GitHub article What's New in 1.0 (Compose).

Version 1.0.0-beta01

July 22, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-beta01 is released.

This release is the first beta. It is considered as feature complete, providing ConstraintLayout and MotionLayout for Compose.

For more information, see the GitHub article What's New in 1.0 (Compose).

Version 1.0.0-alpha07

May 18, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha07 is released.

  • Updated to be compatible with Compose version 1.0.0-beta07.

Version 1.0.0-alpha06

May 4, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha06 is released.

  • Compose optimisation: Constraintlayout inline composable (#193)
  • Minimize remeasurements in Compose (#210)

Version 1.0.0-alpha05

March 15, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha05 is released.

  • includes a fix for the optimization engine (b/182657720)
  • add a optimizationLevel parameter to the ConstraintLayout copmosable

Version 1.0.0-alpha04

March 11, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha04 is released.

Update to use the latest constraintlayout-core engine

Version 1.0.0-alpha03

February 24, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha03 is released.

Release update for Jetpack Compose beta01 release

Version 1.0.0-alpha02

February 10, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha02 is released.

Release update for Jetpack Compose alpha12 release

Version 1.0.0-alpha01

February 2, 2021

androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 is released.

First release of the library, providing inline and external DSLs to express constraints.

Version 2.1

ConstraintLayout 2.1.0 provides richer features in MotionLayout and new helpers (Carousel, etc.)

Version 2.1.4

May 20, 2022

androidx.constraintlayout:constraintlayout:2.1.4 is released.

For more information, see what's New in 2.1.4 on GitHub.

Version 2.1.3

January 13, 2022

androidx.constraintlayout:constraintlayout:2.1.3 is released.

For more information, see the GitHub article What's New in 2.1.

Version 2.1.2

November 16, 2021

androidx.constraintlayout:constraintlayout:2.1.2 is released.

For more information, see the GitHub article What's New in 2.1.

Version 2.1.1

September 27, 2021

androidx.constraintlayout:constraintlayout:2.1.1 is released.

This is the final release for 2.1.1.

For more information, see the GitHub article What's New in 2.1.

Version 2.1.0

July 30, 2021

androidx.constraintlayout:constraintlayout:2.1.0 is released.

This is the final release for 2.1.0.

For more information, see the GitHub article What's New in 2.1.

Version 2.1.0-rc01

July 22, 2021

androidx.constraintlayout:constraintlayout:2.1.0-rc01 is released.

This is the release candidate for 2.1.0, providing minor improvements and fixes from the last beta. For more information, see the GitHub article What's New in 2.1.

Version 2.1.0-beta02

May 4, 2021

androidx.constraintlayout:constraintlayout:2.1.0-beta02 is released.

A few new features in MotionLayout:

  • OnSwipe enhancement including spring (stiffness, damping, mass etc) & never complete
  • jumpToState function
  • ViewTransition downUp mode where on touch Down it plays to 100 and on up reverses to 0

Various fixes, notably:

  • Fix problem in MotionLayout with vertical scroll (#173)
  • Perf improvements on nested MotionLayout (#189)
  • Fast transition with NestedScrollView in MotionLayout (#189)
  • ConstraintSet gone in MotionLayout (#189)
  • Support downUp ViewTransitions in MotionLayout (#190)
  • Fix in ImageFilter when reusing drawables (#192)
  • Add spring support in MotionLayout (#199)
  • Performance improvement to CircularFlow (#200)
  • Fixes in derived constraints / constraint override (#212)

Version 2.1.0-beta01

March 11, 2021

androidx.constraintlayout:constraintlayout:2.1.0-beta01 is released.

ConstraintLayout

android:layout_width and android:layout_height are back being non-optional due to compatibility issues.

MotionLayout

  • Programmatic support for inserting and removing onSwipe and onClick on Transitions
  • Experimental Support for Transitions through screen rotation
  • support duration argument to transitions
  • Better support for customAttributes that are boolean or References

Helpers

  • added a way to animate or jump directly to a given item of a Carousel
  • new CircularFlow helper

See additional information on this release here and bugs closed.

Version 2.1.0-alpha2

December 17, 2020

androidx.constraintlayout:constraintlayout:2.1.0-alpha2 is released.

This second alpha adds several new features:

ConstraintLayout

  • android:layout_width and android:layout_height are now optional, with wrap_content as default behavior
  • new layout_constraintWidth and layout_constraintHeight attributes for expressing dimension constraints
  • supports negative margins for constraints
  • supports baseline to top and baseline to bottom constraints
  • supports baseline margin constraints
  • SharedValues allow to inject external values into ConstraintLayout

MotionLayout

  • Support for overshoot interpolators (anticipate, overshoot)
  • Enhanced MotionHelper support
  • Add animated update of ConstraintSet to MotionLayout updateStateAnimate(id,cset,duration);
  • Shared value based ViewTransition
  • scheduleTransitonTo allow you to que a transition to run at the completion of the current transition.

Helpers

  • Carousel now supports an infinite (wrap-around) mode
  • ReactiveGuide : A guideline that position itself automatically when a SharedValue changes
  • MotionEffect : inject Keyframes to referenced views moving in a given direction
  • MotionLabel - A View for animating single line text

See additional information on this release here.

Version 2.1.0-alpha1

November 19, 2020

androidx.constraintlayout:constraintlayout:2.1.0-alpha1 is released.

First alpha of the 2.1 release. Introduces support for:

  • Carousel motion helper, to build custom carousel views
  • MotionLayout scenes supports include and constraints override
  • MotionLayout adds richer support for rotation (input and output)
  • MotionLayout adds ViewTransitions, allowing single view transitions for mutation of constraintsets

See additional information on this release here.

Version 2.0

ConstraintLayout 2.0 adds new features for layouts (virtual layouts, etc.) and a new class for simplifying animation of views, MotionLayout.

Version 2.0.4

October 29, 2020

androidx.constraintlayout:constraintlayout:2.0.4 is released.

Bug Fixes

This releases fixes a potential NPE that may happen when removing a child view at runtime. It is recommended to update to this version.

See the list of closed issues here.

Version 2.0.3

October 27, 2020

androidx.constraintlayout:constraintlayout:2.0.3 is released.

Bug Fixes

This releases fixes a few issues. It is recommended to update to this version.

  • Windows insets handling
  • Handling of dimension ratio in some situations
  • Crash with some RTL layouts

See the list of closed issues here.

Version 2.0.2

October 6, 2020

androidx.constraintlayout:constraintlayout:2.0.2 is released.

Bug Fixes

This releases improves performances as well as fix a few issues. It is recommended to update to this version.

  • Handling of view GONE visibility in ConstraintLayout was incorrect in some situations
  • Handling of packed chains in ConstraintLayout was incorrect in some situations
  • Fixed inflation exception on API 15 for the Flow virtual layout helper
  • limitsBoundsTo was broken in MotionLayout
  • jump to end was broken in MotionLayout in some situations (chaining transitions)

See the list of closed issues here.

Version 2.0.1

August 25, 2020

androidx.constraintlayout:constraintlayout:2.0.1 is released.

This is a minor update enabling the use of the MotionEditor in Android Studio.

Version 2.0.0

August 21, 2020

androidx.constraintlayout:constraintlayout:2.0.0 is released.

Bug Fixes

See the list of closed issues here.

Notable fixes are:

  • MotionLayout Transition delays & TransitionListener fixes
  • ConstraintLayout flow & barrier fixes

Version 2.0.0-rc1

July 29, 2020

androidx.constraintlayout:constraintlayout:2.0.0-rc1 is released.

Bug Fixes

See the list of closed issues here.

Notable fixes are:

  • Flow fixes
  • RecyclerView fixes (we recommend to update to recyclerview 1.2.0 alpha 5 or later)
  • MotionLayout TransitionListener fixes
  • MotionLayout memory leak fix

Version 2.0.0-beta8

July 7, 2020

androidx.constraintlayout:constraintlayout:2.0.0-beta8 is released.

Bug Fixes

See the list of closed issues here.

Notable fixes are:

  • Placeholder behavior
  • Layer visibility
  • Flow, Barrier fixes
  • TransitionListener fixes

Version 2.0.0-beta7

June 12, 2020

androidx.constraintlayout:constraintlayout:2.0.0-beta7 is released.

Bug Fixes

See the list of closed issues here.

Notable fixes are:

  • Nested scroll view issues in MotionLayout
  • Transition listener issues with MotionLayout
  • Memory leak in MotionLayout
  • RecyclerView issues
  • Group visibility
  • Padding issues

Version 2.0.0-beta6

May 13, 2020

androidx.constraintlayout:constraintlayout:2.0.0-beta6 is released.

Bug Fixes

See the list of closed issues here. Notable fixes are group visibility handling and derived constraints issues in MotionLayout.

Version 2.0.0-beta5

May 7, 2020

androidx.constraintlayout:constraintlayout:2.0.0-beta5 is released.

Bug Fixes

See the list of closed issues here

Version 2.0.0-beta4

December 16, 2019

androidx.constraintlayout:constraintlayout:2.0.0-beta4 is released.

New Features

MotionLayout

New attributes in Transition:

  • layoutDuringTransition : let you configure how MotionLayout should react to children's requestLayouts calls during a transition. Possible values are {ignoreRequest, honorRequest}
  • pathMotionArc : the path taken by elements moving will use an arc. Possible values are {startVertical | startHorizontal | flip | none }

A default transition is now possible to define, simply by omitting the start and end ConstraintSets. That default transition will be used if no other existing transition can be found to match the current start/end states.

Bug Fixes

See the list of closed issues here