package Ġauto ex cl ue . layout Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġle i . j ial in Ġon Ġ 2 0 2 1 / 6 / 1 7 Ċ Ġ*/ Ċ object ĠView Spec Method Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġchoose Desired Size ( spec : ĠInt , Ġdesired : ĠInt , Ġmin : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmode Ġ= ĠView . Measure Spec . get Mode ( spec ) ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠView . Measure Spec . getSize ( spec ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . EX ACT LY Ġ-> Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . AT _ MO ST Ġ-> ĠMath . min ( size , ĠMath . max ( desired , Ġmin )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . UNSPECIFIED Ġ-> ĠMath . max ( desired , Ġmin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠMath . max ( desired , Ġmin ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Child Measure Spec Of ( parent Size : ĠInt , Ġparent Mode : ĠInt , Ġpadding : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Dimension : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠMath . max ( 0 , Ġparent Size Ġ- Ġpadding ) ĊĠĠĠĠĠĠĠ Ġvar Ġresult Size Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġresult Mode Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( child Dimension Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Size Ġ= Ġchild Dimension ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Mode Ġ= ĠView . Measure Spec . EX ACT LY ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( child Dimension Ġ== ĠViewGroup . LayoutParams . MATCH _ PARENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Size Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Mode Ġ= Ġparent Mode ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( child Dimension Ġ== ĠViewGroup . LayoutParams . WRAP _ CONTENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Size Ġ= Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Mode Ġ= Ġif Ġ( parent Mode Ġ== ĠView . Measure Spec . AT _ MO ST Ġ|| Ġparent Mode Ġ== ĠView . Measure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . AT _ MO ST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . UNSPECIFIED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠView . Measure Spec . make Measure Spec ( result Size , Ġresult Mode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Measurement Up ToDate ( child Size : ĠInt , Ġspec : ĠInt , Ġdimension : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspec Mode Ġ= ĠView . Measure Spec . get Mode ( spec ) ĊĠĠĠĠĠĠĠ Ġval Ġspec Size Ġ= ĠView . Measure Spec . getSize ( spec ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dimension Ġ> Ġ 0 Ġ&& Ġchild Size Ġ!= Ġdimension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( spec Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . UNSPECIFIED Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . AT _ MO ST Ġ-> Ġspec Size Ġ>= Ġchild Size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . Measure Spec . EX ACT LY Ġ-> Ġspec Size Ġ== Ġchild Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }