package Ġcom . ang cy o . u iv iew . view group Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . ang cy o . u iv iew . R Ċ import Ġcom . ang cy o . u iv iew . kotlin . exact ly Measure Ċ import Ġcom . ang cy o . u iv iew . kotlin . have Ċ Ċ /** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 , æ·± åľ ³ å¸Ĥ çº¢ é¸ Ł ç½ĳç»ľ ç§ĳ æĬĢ èĤ¡ ä»½ æľī éĻĲ åħ¬åı¸ ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ é¡¹çĽ® åĲįç§° ï¼ļ Ċ Ġ* Ġ ç±»çļĦ æııè¿° ï¼ļ åħģè®¸ ä¸Ģä¸ª åŃĲ View æĴ ĳ æ»¡ åī © ä½Ļ ç©ºéĹ´ , Ġ åı¦ ä¸Ģä¸ª åŃĲ view åı¯ä»¥ åĽºå®ļ å¤§å°ı , Ġ ä¹Łåı¯ä»¥ èĩªåĬ¨ ç¼© æĶ¾ åĪ° æľĢå°ı å¤§å°ı Ċ Ġ* ĠåĪĽå»º äººåĳĺ ï¼ļ Rob i Ċ Ġ* ĠåĪĽå»º æĹ¶éĹ´ ï¼ļ 2 0 1 8 / 0 5 / 1 7 Ġ 1 7 : 5 5 Ċ Ġ* Ġä¿®æĶ¹ äººåĳĺ ï¼ļ Rob i Ċ Ġ* Ġä¿®æĶ¹ æĹ¶éĹ´ ï¼ļ 2 0 1 8 / 0 5 / 1 7 Ġ 1 7 : 5 5 Ċ Ġ* Ġä¿®æĶ¹ å¤ĩ æ³¨ ï¼ļ Ċ Ġ* ĠVersion : Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ open Ġclass ĠFill Layout Ġ: ĠViewGroup Ġ{ ĊĠĠĠ Ġvar Ġreverse Layout Ġ= Ġfalse ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , Ġ 0 ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Fill Layout ) ĊĠĠĠĠĠĠĠ Ġreverse Layout Ġ= Ġtyped Array . getBoolean ( R . style able . Fill Layout _ r _ reverse _ fill _ layout , Ġreverse Layout ) ĊĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Size Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġheight Size Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġchild Max Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġchild Max Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġother Child Width Ġ= Ġ 0 Ġ// åİ» æİī fill View ä¹ĭåĲİ åŃĲ View çļĦ å®½åº¦ ĊĠĠĠĠĠĠĠ Ġvar Ġfill View : ĠView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġfill View Width Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġfill Min Width View : ĠView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġfill Min Width Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams : ĠLayout Params Ġ= Ġchild . layout Params Ġas ĠLayout Params ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasure Child With Margins ( child , Ġwidth Measure Spec , Ġ 0 , Ġheight Measure Spec , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Max Width Ġ+= Ġchild . meas ured Width Ġ+ Ġparams . width Margin () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . is Fill View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill View Ġ= Ġchild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill View Width Ġ= Ġchild . meas ured Width Ġ+ Ġparams . width Margin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . fill Min Width Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Min Width Ġ= Ġparams . fill Min Width Ġ+ Ġparams . width Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Min Width View Ġ= Ġchild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Child Width Ġ+= Ġchild . meas ured Width Ġ+ Ġparams . width Margin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Max Height Ġ= ĠMath . max ( child Max Height , Ġchild . meas ured Height Ġ+ Ġparams . height Margin ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( width Mode Ġ!= ĠMeasure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Size Ġ= Ġchild Max Width Ġ+ Ġpadding Left Ġ+ Ġpadding Right ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( fill Min Width Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Child Width Ġ= Ġfill Min Width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġreset Height Size ( size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ+ Ġpadding Top Ġ+ Ġpadding Bottom Ġ> Ġheight Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( height Mode Ġ!= ĠMeasure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Size Ġ= Ġsize Ġ+ Ġpadding Top Ġ+ Ġpadding Bottom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġchild Height Measure ( params : ĠLayout Params ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( params . height Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexactly Measure ( params . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( params . height Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexactly Measure ( height Size Ġ- Ġpadding Top Ġ- Ġpadding Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . make Measure Spec ( height Size , ĠMeasure Spec . UNSPECIFIED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreset Height Size ( child Max Height ) ĊĊĠĠĠĠĠĠĠ Ġfill View ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams : ĠLayout Params Ġ= Ġit . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . width Ġ== Ġ- 2 Ġ&& Ġfill View Width Ġ+ Ġfill Min Width Ġ< Ġwidth Size ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( child Max Width Ġ> Ġwidth Size Ġ|| Ġparams . is Fill Space ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åŃĲ View çļĦ å®½åº¦ Ġ è¶ħ èĮĥåĽ´ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . measure ( exact ly Measure ( width Size Ġ- Ġother Child Width Ġ- Ġpadding Left Ġ- Ġpadding Right ), Ġchild Height Measure ( params )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill View Width Ġ= Ġit . meas ured Width Ġ+ Ġparams . width Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Height Size ( it . meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfill Min Width View ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams : ĠLayout Params Ġ= Ġit . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . width Ġ== Ġ- 1 Ġ&& Ġfill View Width Ġ+ Ġfill Min Width Ġ< Ġwidth Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . measure ( exact ly Measure ( width Size Ġ- Ġfill View Width Ġ- Ġpadding Left Ġ- Ġpadding Right ), Ġchild Height Measure ( params )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Height Size ( it . meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( child Max Width Ġ> Ġwidth Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . measure ( exact ly Measure ( params . fill Min Width ), Ġchild Height Measure ( params )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Height Size ( it . meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . is Fill Space ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . measure ( exact ly Measure ( width Size Ġ- Ġfill View Width Ġ- Ġpadding Left Ġ- Ġpadding Right ), Ġchild Height Measure ( params )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Height Size ( it . meas ured Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( width Size , Ġheight Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġl : ĠInt , Ġt : ĠInt , Ġr : ĠInt , Ġb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä»İ åı³ è¾¹ åĲĳ å·¦ è¾¹ å¸ĥå±Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrefresh Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// çĽ®åīį åıª æĶ¯æĮģ æ¨ ª åĲĳ Ġ åıį åĲĳ å¸ĥå±Ģ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġright Offset Ġ= Ġpadding Left // get Padding Right (); Ċ // ĠĠĠĠĠĠĠ Ġval Ġtop Offset Ġ= Ġpadding Top ĊĊĠĠĠĠĠĠĠ Ġvar Ġstart HO ffset Ġ= Ġpadding Left ĊĠĠĠĠĠĠĠ Ġvar Ġstart V Offset Ġ= Ġpadding Top ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild At Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child At . visibility Ġ!= ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child At Ġis ĠLinearLayout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild At . gravity Ġ= Ġif Ġ( reverse Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr avity . END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr avity . START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( child At Ġis ĠFrame Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġchild At . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Child View Ġ= Ġchild At . getChild At ( j ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġsub Child View . layout Params Ġas ĠFrame Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . gravity Ġ= Ġif Ġ( reverse Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr avity . END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr avity . START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Child View . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġchild At . layout Params Ġas ĠLayout Params ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Width Ġ= Ġchild At . meas ured Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Height Ġ= Ġchild At . meas ured Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtop Ġ= Ġstart V Offset Ġ+ Ġlp . top Margin ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġif Ġ( reverse Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Width Ġ- Ġstart HO ffset Ġ- Ġlp . left Margin Ġ- Ġview Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart HO ffset Ġ+ Ġlp . left Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lp . gravity . have ( Gravity . BOTTOM )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġmeasured Height Ġ- Ġpadding Bottom Ġ- Ġlp . bottom Margin Ġ- Ġview Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild At . layout ( left , Ġtop , Ġleft Ġ+ Ġview Width , Ġtop Ġ+ Ġview Height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart HO ffset Ġ+= Ġview Width Ġ+ Ġlp . left Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġadd View ( child : ĠView ?, Ġindex : ĠInt , Ġparams : ĠViewGroup . LayoutParams ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . addView ( child , Ġindex , Ġparams ) ĊĠĠĠĠĠĠĠ Ġ// æľĢ å¤ļ æĶ¯æĮģ 2 ä¸ª åŃĲ View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Default LayoutParams (): ĠLayout Params Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLayout Params ( super . generate Default LayoutParams ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate LayoutParams ( attrs : ĠAttributeSet ?): ĠLayout Params Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLayout Params ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠLayout Params Ġ: ĠLinearLayout . LayoutParams Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** å¦Ĥæŀľ ä¸º true , Ġ éĤ£ä¹Ī è¿Ļä¸ª View çļĦ å®½åº¦ , Ġåľ¨ è¶ħ åĩº éĻĲåĪ¶ ä¹ĭåĲİ , Ġä¼ļ éĩįæĸ° æµĭ éĩı */ ĊĠĠĠĠĠĠĠ Ġvar Ġis Fill View Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ/** å½ĵ layout çļĦ ç©ºéĹ´ æľī å¤ļ æĹ¶ , Ġæĺ¯åĲ¦ åįł æ»¡ */ ĊĠĠĠĠĠĠĠ Ġvar Ġis Fill Space Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** è®¾ç½® è¿Ļä¸ª åĢ¼ ä¹ĭåĲİ ( > 0 ), Ġview ä¸Ģ å¼Ģå§ĭ ä¼ļ åįł æ»¡ layout çļĦ åī © ä½Ļ ç©ºéĹ´ , Ġå½ĵ is Fill View ä¸º true çļĦ view éĩįæĸ° æµĭ éĩı çļĦæĹ¶åĢĻ , Ġ è¿Ļä¸ª View åħģè®¸ çļĦ æľĢå°ı å®½åº¦ */ ĊĠĠĠĠĠĠĠ Ġvar Ġfill Min Width Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġconstructor ( width : ĠInt , Ġheight : ĠInt ) Ġ: Ġsuper ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġconstructor ( p : ĠViewGroup . LayoutParams ?) Ġ: Ġsuper ( p ) ĊĊĠĠĠĠĠĠĠ Ġconstructor ( c : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( c , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array Ġ= Ġc . obtain Styled Attributes ( attrs , ĠR . style able . Fill Layout _ Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fill View Ġ= Ġtyped Array . getBoolean ( R . style able . Fill Layout _ Layout _ r _ fill _ view , Ġis Fill View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fill Space Ġ= Ġtyped Array . getBoolean ( R . style able . Fill Layout _ Layout _ r _ fill _ space , Ġis Fill Space ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Min Width Ġ= Ġtyped Array . get Dimension Pixel Offset ( R . style able . Fill Layout _ Layout _ r _ fill _ min _ width , Ġfill Min Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwidth Margin (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġleft Margin Ġ+ Ġright Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġheight Margin (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtop Margin Ġ+ Ġbottom Margin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }