package Ġme . ws j . f eng yun . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . widget . LinearLayout Ċ import Ġme . ws j . f eng yun . utils . Content Util Ċ Ċ class ĠBind Bottom Layout Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Total Length Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Extent Height Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ); ĊĠĠĠĠĠĠĠ Ġm Total Length Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġtop 3 Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar ĠmaxWidth Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġchild Count ĊĊĠĠĠĠĠĠĠ Ġ// ĠSee Ġhow Ġt all Ġeveryone Ġis . ĠAlso Ġremember Ġmax Ġwidth . ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( i ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDetermine Ġhow Ġbig Ġthis Ġchild Ġwould Ġlike Ġto Ġbe . ĠIf Ġthis Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprevious Ġchildren Ġhave Ġgiven Ġa Ġweight , Ġthen Ġwe Ġallow Ġit Ġto ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuse Ġall Ġavailable Ġspace Ġ( and Ġwe Ġwill Ġshrink Ġthings Ġlater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġneeded ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġused Height Ġ= Ġm Total Length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure Child With Margins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild , Ġwidth Measure Spec , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Measure Spec , Ġused Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Height Ġ= Ġchild . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġchild . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Total Length Ġ+= Ġchild Height Ġ+ Ġlp . top Margin Ġ+ Ġlp . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= Ġlp . left Margin Ġ+ Ġlp . right Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeasured Width Ġ= Ġchild . meas ured Width Ġ+ Ġmargin ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxWidth Ġ= ĠMath . max ( maxWidth , Ġmeasured Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop 3 Height Ġ+= Ġchild Height Ġ+ Ġlp . top Margin Ġ+ Ġlp . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġin Ġour Ġpadding ĊĠĠĠĠĠĠĠ Ġm Total Length Ġ+= Ġpadding Top Ġ+ Ġpadding Bottom ĊĊĠĠĠĠĠĠĠ Ġ// Ġ è®¡ç®Ĺ æī©å±ķ é«ĺåº¦ ï¼Į ä»¥ ä¿ĿæĮģ åīį ä¸¤ä¸ª item ä¿ĿæĮģ åľ¨ å±ı å¹ķ åºķ éĥ¨ ĊĠĠĠĠĠĠĠ Ġm Extent Height Ġ= ĠContent Util . visible Height Ġ- Ġtop 3 Height ĊĠĠĠĠĠĠĠ Ġif Ġ( m Extent Height Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Total Length Ġ+= Ġm Extent Height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠmaxWidth Ġ+= Ġpadding Left Ġ+ Ġpadding Right ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Size ( maxWidth , Ġwidth Measure Spec ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Size ( m Total Length , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġl : ĠInt , Ġt : ĠInt , Ġr : ĠInt , Ġb : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġl , Ġt , Ġr , Ġb ); ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġchild Count ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Y Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġchild . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Y Ġ+= Ġlp . top Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . left Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . left Margin Ġ+ Ġchild . meas ured Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Y Ġ+ Ġchild . meas ured Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Y Ġ+= Ġchild . meas ured Height Ġ+ Ġlp . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 Ġ&& Ġm Extent Height Ġ> Ġ 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . e (" m Extent Height : Ġ" Ġ+ Ġm Extent Height ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Y Ġ+= Ġm Extent Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }