package Ġorg . fu us io . api . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ Ċ class ĠFlow Layout Ġ: ĠViewGroup Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġline Height Space Ġ= Ġ 0 ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( Measure Spec . get Mode ( width Measure Spec ) Ġ!= ĠMeasure Spec . UNSPECIFIED ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) Ġ- Ġpadding Left Ġ- Ġpadding Right ĊĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) Ġ- Ġpadding Top Ġ- Ġpadding Bottom ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġchild Count ĊĠĠĠĠĠĠĠ Ġvar Ġline Height Space Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġpadding Top ĊĠĠĠĠĠĠĠ Ġval Ġchild Height Measure Spec Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Measure Spec . get Mode ( height Measure Spec ) Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . make Measure Spec ( height , ĠMeasure Spec . AT _ MO ST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . make Measure Spec ( 0 , ĠMeasure Spec . UNSPECIFIED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child . visibility Ġ!= ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġchild . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . measure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . make Measure Spec ( width , ĠMeasure Spec . AT _ MO ST ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Height Measure Spec ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Width Ġ= Ġchild . meas ured Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Height Space Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Height Space . coerce At Least ( child . meas ured Height Ġ+ Ġparams . vertical _ spacing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ+ Ġchild Width Ġ> Ġwidth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġline Height Space ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġchild Width Ġ+ Ġparams . horizontal _ spacing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . line Height Space Ġ= Ġline Height Space ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Measure Spec . get Mode ( height Measure Spec ) Ġ== ĠMeasure Spec . UNSPECIFIED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġy Ġ+ Ġline Height Space ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Measure Spec . get Mode ( height Measure Spec ) Ġ== ĠMeasure Spec . AT _ MO ST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġ+ Ġline Height Space Ġ< Ġheight ) Ġheight Ġ= Ġy Ġ+ Ġline Height Space ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( width , Ġheight ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Default LayoutParams (): ĠViewGroup . LayoutParams Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLayout Params ( 1 , Ġ 1 ) Ġ// Ġdefault Ġof Ġ 1 px Ġspacing ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck LayoutParams ( params : ĠViewGroup . LayoutParams ) Ġ= Ġparams Ġis ĠLayout Params ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( ĊĠĠĠĠĠĠĠ Ġis Changed : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġleft : ĠInt , ĊĠĠĠĠĠĠĠ Ġtop : ĠInt , ĊĠĠĠĠĠĠĠ Ġright : ĠInt , ĊĠĠĠĠĠĠĠ Ġbottom : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġchild Count ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġright Ġ- Ġleft ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġpadding Top ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child . visibility Ġ!= ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Width Ġ= Ġchild . meas ured Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Height Ġ= Ġchild . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġchild . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ+ Ġchild Width Ġ> Ġwidth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġline Height Space ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . layout ( x , Ġy , Ġx Ġ+ Ġchild Width , Ġy Ġ+ Ġchild Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġchild Width Ġ+ Ġparams . horizontal _ spacing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠLayout Params ( var Ġhorizontal _ spacing : ĠInt , Ġvar Ġvertical _ spacing : ĠInt ) Ġ: ĊĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams ( 0 , Ġ 0 ) Ċ }