package Ġdk . must ache . core lib . bottom sheet _ fullscreen Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . constraint layout . widget . Constraint Set Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġdk . must ache . core lib . Must ache Core Lib Ċ import Ġdk . must ache . core lib . R Ċ import Ġdk . must ache . core lib . databinding . Fragment Bottom sheet Expand Fullscreen Background Binding Ċ import Ġdk . must ache . core lib . utils . to Px Ċ Ċ abstract Ġclass ĠBottom Sheet Expand To Fullscreen Fragment < T Ġ: ĠParcel able , ĠQ Ġ: ĠView Data Binding > Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġitem : ĠT ĊĠĠĠ Ġprivate Ġvar Ġexpand : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbackground Binding : ĠFragment Bottom sheet Expand Fullscreen Background Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠQ ĊĠĠĠ Ġvar Ġwrap Content Height Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcurrent State Ġ: ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġopen Ġfun Ġset View Binding ( binding : ĠQ ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchild Layout Binding Ġ= Ġbinding ĊĊĠĠĠĠĠĠĠ Ġval Ġbackground Layout : ĠLinearLayout Ġ= Ġbackground Binding . expand able Data Layout ĊĠĠĠĠĠĠĠ Ġbackground Layout . removeAll Views () ĊĊĠĠĠĠĠĠĠ Ġbackground Layout . addView ( child Layout Binding . root , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġthis . binding Ġ= Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCUSTOM _ ITEM Ġ= Ġ" custom _ item " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠOPEN _ EXP AN DED Ġ= Ġ" open _ expanded " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Style ( Dialog Fragment . STYLE _ NORMAL , ĠR . style . Bottom Sheet Product Details Fullscreen Style ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( arguments != null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= Ġarguments ?. get Parcelable ( CUSTOM _ ITEM ) ?: Ġthrow ĠException ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpand Ġ= Ġarguments ?. getBoolean ( OPEN _ EXP AN DED ) ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent State Ġ= Ġif Ġ( expand ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ HALF _ EXP AN DED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbackground Binding Ġ= ĠFragment Bottom sheet Expand Fullscreen Background Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbackground Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dialog Hidden ( behavior : ĠBottom Sheet Behavior < Frame Layout >) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Non Fullscreen Visual s () ĊĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠ Ġset New State ( Bottom Sheet Behavior . STATE _ HIDDEN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dialog Half Expanded ( behavior : ĠBottom Sheet Behavior < Frame Layout >) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Non Fullscreen Visual s () ĊĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HALF _ EXP AN DED ĊĠĠĠĠĠĠĠ Ġset New State ( Bottom Sheet Behavior . STATE _ HALF _ EXP AN DED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Non Fullscreen Visual s () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( background Binding . exp an able Bottom sheet Layout . background Ġ!= ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMust ache Core Lib . getContext Check Init (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . bottom _ sheet _ menu _ rounded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Binding . exp an able Bottom sheet Layout . background Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMust ache Core Lib . getContext Check Init (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . bottom _ sheet _ menu _ rounded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Binding . top Drag Divider . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. window ?. status Bar Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( Must ache Core Lib . getContext Check Init (), ĠR . color . transparent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Fullscreen Visual s () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( background Binding . exp an able Bottom sheet Layout . background Ġ!= ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMust ache Core Lib . getContext Check Init (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . bottom _ sheet _ product _ details _ white ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Binding . exp an able Bottom sheet Layout . background Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMust ache Core Lib . getContext Check Init (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . bottom _ sheet _ product _ details _ white ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Binding . top Drag Divider . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dialog Fullscreen ( behavior : ĠBottom Sheet Behavior < Frame Layout >) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Fullscreen Visual s () ĊĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠ Ġset New State ( Bottom Sheet Behavior . STATE _ EXP AN DED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure FullScreen Bottom Sheet Dialog ( context : ĠContext , Ġbottom Sheet Dialog : ĠBottom Sheet Dialog , Ġtop Margin : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbottom Sheet Dialog . setOn Show Listener Ġ{ Ġdia Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġdia Ġas ĠBottom Sheet Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < Frame Layout >( R . id . design _ bottom _ sheet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġbottom Sheet !!. layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Height : ĠInt Ġ= Ġget Desired Bottom Sheet Dialog Height ( context , Ġtop Margin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Params Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . height Ġ= Ġwindow Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrap Content Height Ġ= Ġthis . background Binding . root . height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġratio Ġ= Ġwrap Content Height . toFloat () Ġ/ Ġwindow Height . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbehavior Ġ= ĠBottom Sheet Behavior . from ( bottom Sheet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . peek Height Ġ= Ġlayout Params . height Ġ+ Ġ 1 3 0 . to Px () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . is Fit To Contents Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . half Expanded Ratio Ġ= Ġratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expand ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Dialog Fullscreen ( behavior ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Dialog Half Expanded ( behavior ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . skip Collapsed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . is Hide able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window ?. decor View ?. system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlock Slide Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Slide Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . add Bottom Sheet Callback ( object : ĠBottom Sheet Behavior . Bottom Sheet Callback (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( newState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ EXP AN DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fullscreen Visual s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. window ?. status Bar Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( Must ache Core Lib . getContext Check Init (), ĠR . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ HIDDEN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Non Fullscreen Visual s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ HALF _ EXP AN DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Non Fullscreen Visual s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset New State ( newState ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! lock Slide ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupper State Ġ= Ġ 0 . 6 6 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlower State Ġ= Ġ 0 . 3 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Offset Abs Ġ= ĠMath . abs ( slide Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( behavior . state Ġ== ĠBottom Sheet Behavior . STATE _ SET TL ING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Offset Abs Ġ>= Ġupper State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HIDDEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Offset Abs Ġ> Ġlower State Ġ&& Ġs Offset Abs Ġ< Ġupper State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HALF _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Offset Abs Ġ<= Ġlower State Ġ&& Ġs Offset Abs Ġ> Ġ 0 . 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( s Offset Abs Ġ< Ġ 0 . 1 7 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fullscreen Visual s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window ?. status Bar Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( Must ache Core Lib . getContext Check Init (), ĠR . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( s Offset Abs Ġ< Ġ 0 . 3 3 f Ġ&& Ġs Offset Abs Ġ>= Ġ 0 . 1 7 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fullscreen Visual s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. window ?. status Bar Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( Must ache Core Lib . getContext Check Init (), ĠR . color . transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Non Fullscreen Visual s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġm Bottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ COLL AP SED ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Desired Bottom Sheet Dialog Height ( context : ĠContext , Ġtop Margin : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCalculate Ġwindow Ġheight Ġfor Ġfullscreen Ġuse ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġ( context Ġas ĠActivity ?) !!. window Manager . default Display . get Metrics ( display Metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Height = Ġdisplay Metrics . height Pixels ĊĠĠĠĠĠĠĠ Ġreturn Ġdisplay Height . minus ( top Margin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġsuper . onCreate Dialog ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġconfigure FullScreen Bottom Sheet Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit , Ġdialog Ġas ĠBottom Sheet Dialog , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset New State ( newState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold State Ġ= Ġcurrent State ĊĠĠĠĠĠĠĠ Ġcurrent State Ġ= ĠnewState ĊĠĠĠĠĠĠĠ Ġdialog StateChanged ( old State , ĠnewState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġdialog StateChanged ( old State : ĠInt , ĠnewState : ĠInt ) Ċ } Ċ