// Ġk tl int - disable Ġindent Ġhttps :// github . com / p interest / kt lint / issues / 9 6 7 Ċ /* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ // ĠIgnore Ġlint Ġwarnings Ġin Ġdocumentation Ġsnippets Ċ @ file : Suppress (" unused ", Ġ" UNUSED _ PARAMETER ", Ġ" UNUSED _ VARIABLE ") Ċ Ċ package Ġandroidx . compose . integration . docs . layout Ċ Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . integration . docs . layout . Layout Snippet 1 2 . first Baseline To Top Ċ import Ġandroidx . compose . material . Card Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . Alignment Line Ċ import Ġandroidx . compose . ui . layout . First Baseline Ċ import Ġandroidx . compose . ui . layout . Layout Ċ import Ġandroidx . compose . ui . layout . layout Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp Ċ Ċ /** Ċ Ġ* ĠThis Ġfile Ġlets ĠDev Rel Ġtrack Ġchanges Ġto Ġsnippets Ġpresent Ġin Ċ Ġ* Ġhttps :// developer . android . com / jet pack / compose / layout Ċ Ġ* Ċ Ġ* ĠNo Ġaction Ġrequired Ġif Ġit 's Ġmodified . Ċ Ġ*/ Ċ Ċ private Ġobject ĠLayout Snippet 1 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠArtist Card () Ġ{ ĊĠĠĠĠĠĠĠ ĠText (" A lf red ĠS is ley ") ĊĠĠĠĠĠĠĠ ĠText (" 3 Ġminutes Ġago ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 2 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠArtist Card () Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" A lf red ĠS is ley ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" 3 Ġminutes Ġago ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 3 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠArtist Card ( artist : ĠArtist ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( vertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage (/* ... */) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( artist . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( artist . last Seen Online ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 3 bis Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠArtist Card ( ĊĠĠĠĠĠĠĠ Ġartist : ĠArtist , ĊĠĠĠĠĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 1 6 . dp ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( onClick Ġ= ĠonClick ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( padding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( vertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ Ġ/* ... */ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( Modifier . size ( padding )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCard ( elevation Ġ= Ġ 4 . dp ) Ġ{ Ġ/* ... */ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 4 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠArtist Card (/* ... */) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 1 6 . dp ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( onClick Ġ= ĠonClick ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( padding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrest Ġof Ġthe Ġimplementation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 5 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠArtist Card (/* ... */) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= Ġ 1 6 . dp ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( padding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( onClick Ġ= ĠonClick ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrest Ġof Ġthe Ġimplementation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 6 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠFeed ( ĊĠĠĠĠĠĠĠ Ġfeed Items : ĠList < Artist >, ĊĠĠĠĠĠĠĠ Ġon Selected : Ġ( Artist ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( Modifier . fill MaxSize (). vertical Scroll ( remember Scroll State ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Items . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArtist Card ( it , Ġon Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 7 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠFeed ( ĊĠĠĠĠĠĠĠ Ġfeed Items : ĠList < Artist >, ĊĠĠĠĠĠĠĠ Ġon Selected : Ġ( Artist ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSurface ( Modifier . fill MaxSize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Column Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( feed Items ) Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArtist Card ( item , Ġon Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 8 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠHome Screen (/* ... */) Ġ{ ĊĠĠĠĠĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Content Ġ= Ġ{ Ġ/* ... */ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ Ġ/* ... */ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ{ Ġ/* ... */ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO : Ġuncomment Ġwhen Ġconstraint Ġlayout Ġfor Ġcompose Ġreleases , Ġand Ġadd Ġthat Ġdependency Ċ /* Ġk tl int - disable Ġindent Ġ* //* Ċ Ċ @ Suppress (" De precation ") Ċ private Ġobject ĠLayout Snippet 9 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠConstraint Layout Content () Ġ{ ĊĠĠĠĠĠĠĠ ĠConstraint Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġreferences Ġfor Ġthe Ġcomp os ables Ġto Ġconstr ain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( button , Ġtext ) Ġ= Ġcreate Refs () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġ*/ Ċ /* ĠDo Ġsomething Ġ* //* Ċ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAssign Ġreference Ġ" button " Ġto Ġthe ĠButton Ġcomp osable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġconstr ain Ġit Ġto Ġthe Ġtop Ġof Ġthe ĠConstraint Layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . constr ain As ( button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( parent . top , Ġmargin Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Button ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAssign Ġreference Ġ" text " Ġto Ġthe ĠText Ġcomp osable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġconstr ain Ġit Ġto Ġthe Ġbottom Ġof Ġthe ĠButton Ġcomp osable ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Text ", ĠModifier . constr ain As ( text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( button . bottom , Ġmargin Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ */ Ċ /* Ġk tl int - enable Ġindent Ġ* //* ĊĊ Ċ */ Ċ /** Ċ Ġ* ĠDe coup led ĠAPI Ċ Ġ* //* Ċ Ċ @ Suppress (" De precation ") Ċ private Ġobject ĠLayout Snippet 1 0 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠDe coup led Constraint Layout () Ġ{ ĊĠĠĠĠĠĠĠ ĠBox With Constraints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= Ġif Ġ( min Width Ġ< Ġ 6 0 0 . dp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde coup led Constraints ( margin Ġ= Ġ 1 6 . dp ) Ġ// ĠPor trait Ġconstraints ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde coup led Constraints ( margin Ġ= Ġ 3 2 . dp ) Ġ// ĠLand scape Ġconstraints ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstraint Layout ( constraints ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġ*/ Ċ /* ĠDo Ġsomething Ġ* //* Ċ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . layout Id (" button ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Button ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Text ", ĠModifier . layout Id (" text ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġde coup led Constraints ( margin : ĠD p ): ĠConstraint Set Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠConstraint Set Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= Ġcreate Ref For (" button ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġcreate Ref For (" text ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstr ain ( button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( parent . top , Ġmargin Ġ= Ġmargin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstr ain ( text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop . link To ( button . bottom , Ġmargin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ */ Ċ Ċ private Ġobject ĠLayout Snippet 1 1 Ġ{ ĊĠĠĠ Ġ/* ĠCan 't Ġbe Ġcompiled Ġwithout Ġreturning Ġlayout () Ġfrom ĠModifier . layout . ĠSee Ġnext Ġsnippet Ġfor ĊĠĠĠ Ġpossible Ġchanges . ĊĊĠĠĠ Ġfun ĠModifier . custom Layout Modifier (/* ... */) Ġ= ĊĠĠĠĠĠĠĠ ĠModifier . layout Ġ{ Ġmeas ur able , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ*/ Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 1 2 Ġ{ ĊĠĠĠ Ġfun ĠModifier . first Baseline To Top ( ĊĠĠĠĠĠĠĠ Ġfirst Baseline To Top : ĠD p ĊĠĠĠ Ġ) Ġ= ĠModifier . layout Ġ{ Ġmeas ur able , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠ Ġ// ĠMeasure Ġthe Ġcomp osable ĊĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( constraints ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġcomp osable Ġhas Ġa Ġfirst Ġbaseline ĊĠĠĠĠĠĠĠ Ġcheck ( place able [ First Baseline ] Ġ!= ĠAlignment Line . Unspecified ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Baseline Ġ= Ġplace able [ First Baseline ] ĊĊĠĠĠĠĠĠĠ Ġ// ĠHeight Ġof Ġthe Ġcomp osable Ġwith Ġpadding Ġ- Ġfirst Ġbaseline ĊĠĠĠĠĠĠĠ Ġval Ġplace able Y Ġ= Ġfirst Baseline To Top . round To Px () Ġ- Ġfirst Baseline ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġplace able . height Ġ+ Ġplace able Y ĊĠĠĠĠĠĠĠ Ġlayout ( place able . width , Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhere Ġthe Ġcomp osable Ġgets Ġplaced ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( 0 , Ġplace able Y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 1 3 Ġ{ ĊĠĠĠ Ġ@ Preview ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠText With Padding To Baseline Preview () Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Application Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Hi Ġthere !", ĠModifier . first Baseline To Top ( 3 2 . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Preview ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠText With Normal Padding Preview () Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Application Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Hi Ġthere !", ĠModifier . padding ( top Ġ= Ġ 3 2 . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 1 4 Ġ{ ĊĠĠĠ Ġ/* ĠCan 't Ġbe Ġcompiled Ġwithout Ġreturning Ġlayout () Ġfrom ĠLayout . ĠSee Ġprevious Ġsnippet Ġfor Ġpossible ĊĠĠĠ Ġchanges . ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠMy Own Column ( ĊĠĠĠĠĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠ Ġcontent : Ġ@ Composable () Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġmeas ur ables , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmeasure Ġand Ġposition Ġchildren Ġgiven Ġconstraints Ġlogic Ġhere ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠ Ġ*/ Ċ } Ċ Ċ private Ġobject ĠLayout Snippet 1 5 and 1 6 Ġ{ ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠMy Own Column ( ĊĠĠĠĠĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠ Ġcontent : Ġ@ Composable () Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġmeas ur ables , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġconstr ain Ġchild Ġviews Ġfurther , Ġmeasure Ġthem Ġwith Ġgiven Ġconstraints ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠList Ġof Ġmeasured Ġchildren ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace ables Ġ= Ġmeas ur ables . map Ġ{ Ġmeas ur able Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMeasure Ġeach Ġchildren ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeas ur able . measure ( constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġsize Ġof Ġthe Ġlayout Ġas Ġbig Ġas Ġit Ġcan ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout ( constraints . maxWidth , Ġconstraints . max Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTrack Ġthe Ġy Ġco - ord Ġwe Ġhave Ġplaced Ġchildren Ġup Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Position Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPlace Ġchildren Ġin Ġthe Ġparent Ġlayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace ables . forEach Ġ{ Ġplace able Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPosition Ġitem Ġon Ġthe Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place Relative ( x Ġ= Ġ 0 , Ġy Ġ= Ġy Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRecord Ġthe Ġy Ġco - ord Ġplaced Ġup Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Position Ġ+= Ġplace able . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSn ippet Ġ 1 6 ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠCalling Composable ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Own Column ( modifier . padding ( 8 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" My Own Column ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" places Ġitems ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" vert ically .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText (" We 've Ġdone Ġit Ġby Ġhand !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /* Ċ F akes Ġneeded Ġfor Ġsnippets Ġto Ġbuild : Ċ Ġ*/ Ċ Ċ private Ġdata Ġclass ĠArtist ( val Ġname : ĠString , Ġval Ġlast Seen Online : ĠString ) Ċ private Ġclass ĠImage Ċ private Ġval ĠonClick Ġ= Ġ{} Ċ private Ġdata Ġclass ĠArtist Card ( val Ġartist : ĠArtist , Ġval Ġon Something : Ġ( Artist ) Ġ-> ĠUnit ) Ċ @ Composable Ġprivate Ġfun ĠMy Application Theme ( content : Ġ@ Composable () Ġ() Ġ-> ĠUnit ) Ġ{} Ċ