package Ġspace . n arr ate . way lan . core . ui . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . Window Insets Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . core . content . res . use Ċ import Ġandroidx . core . view . children Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ import Ġspace . n arr ate . way lan . core . R Ċ import Ġspace . n arr ate . way lan . core . util . findFirst Desc endant OrNull Ċ import Ġspace . n arr ate . way lan . core . util . getColor State List Ċ import Ġspace . n arr ate . way lan . core . util . invisible Ċ import Ġspace . n arr ate . way lan . core . util . visible Ċ Ċ /** Ċ Ġ* ĠA ĠFrame Layout Ġwhich Ġadds Ġa Ġstatus Ġbar Ġs cri m Ġto Ġthe Ġtop Ġof Ġthe Ġscreen Ġand Ġa Ġbackground Ġcolor Ċ Ġ* Ġto Ġa Ġlayout . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġhelpful Ġwhen Ġdragging Ġto Ġdismiss Ġa Ġlayout . ĠThis Ġcan Ġbe Ġused Ġas Ġthe Ġroot Ġlayout Ġand Ċ Ġ* Ġbe Ġexcluded Ġfrom Ġthe Ġviews Ġbeing Ġ" drag ged ", Ġcausing Ġa Ġs cri m Ġto Ġshow Ġbelow Ġthe Ġcontent , Ċ Ġ* Ġhelping Ġshow Ġthe Ġtop Ġof Ġthe Ġcontent Ġis Ġsepar ating Ġfrom Ġthe Ġwindow . Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġlayout Ġhas Ġa Ġcol lap sing ĠApp Bar Layout , Ġthe Ġstatus Ġbar Ġs cri m Ġwill Ġbe Ġinvisible Ġif Ġthe Ċ Ġ* ĠA BL Ġis Ġfully Ġexpanded Ġand Ġturn Ġvisible Ġwhen Ġthe ĠA BL Ġbegins Ġto Ġscroll . Ċ Ġ*/ Ċ class ĠS cri m Window Layout Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= ĠDEF _ STYLE _ ATTR , ĊĠĠĠ Ġdef Style Res : ĠInt Ġ= ĠDEF _ STYLE _ RES Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstatus Bar S cri m Ġ= ĠView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . TOP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠgetContext (). theme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . S cri m Window Layout , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Res ĊĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Tint Ġ= Ġit . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . S cri m Window Layout _ background Tint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . attr . color Background ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Bar Tint Ġ= Ġit . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . S cri m Window Layout _ status Bar S cri m Tint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . attr . color Background ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( background Tint . default Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar S cri m . set BackgroundColor ( status Bar Tint . default Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġclip To Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġclip Children Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Apply Window Insets ( in sets : ĠWindow Insets ): ĠWindow Insets Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRecord Ġthe Ġheight Ġof Ġthe Ġtop Ġwindow Ġinset Ġso Ġwe Ġcan Ġcreate Ġa Ġfake Ġstatus Ġbar ĊĠĠĠĠĠĠĠ Ġ// Ġequal Ġto Ġit 's Ġheight Ġso Ġwhen Ġcontent Ġin Ġa Ġchild ĠApp Bar Layout Ġis Ġscrolling Ġunder Ġthe Ġstatus ĊĠĠĠĠĠĠĠ Ġ// Ġbar , Ġwe Ġcan Ġalpha Ġin Ġthe Ġstatus Ġbar Ġs cri m Ġand Ġkeep Ġthe Ġcontent Ġfrom Ġshowing Ġbehind ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġstatus Ġbar Ġarea . ĊĠĠĠĠĠĠĠ Ġstatus Bar S cri m . layout Params . height Ġ= Ġin sets . system Window Inset Top ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Apply Window Insets ( in sets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Finish Inf late () ĊĊĠĠĠĠĠĠĠ Ġ( findFirst Desc endant OrNull Ġ{ Ġit Ġis ĠApp Bar Layout Ġ} Ġas ĠApp Bar Layout ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add On Offset Changed Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Bar Layout . On Offset Changed Listener Ġ{ Ġ_, Ġvertical Offset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vertical Offset Ġ== Ġ 0 ) Ġstatus Bar S cri m . invisible () Ġelse Ġstatus Bar S cri m . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġadd View ( status Bar S cri m , Ġchild Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEF _ STYLE _ ATTR Ġ= ĠR . attr . style S cri m Window ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEF _ STYLE _ RES Ġ= ĠR . style . Widget _ Way lan _ S cri m Window ĊĠĠĠ Ġ} Ċ }