@ file : Suppress Lint (" Restricted Api ") Ċ Ċ package Ġme . s aket . cascade Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . util . Typed Value . COMPLEX _ UNIT _ DIP Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . OVER _ SCROLL _ ALWAYS Ċ import Ġandroid . view . View . OVER _ SCROLL _ NE VER Ċ import Ġandroid . view . ViewGroup . Margin LayoutParams Ċ import Ġandroidx . annotation . Style able Res Ċ import Ġandroidx . appcompat . view . menu . Menu Builder Ċ import Ġandroidx . appcompat . widget . PopupMenu Ċ import Ġandroidx . core . view . update LayoutParams Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ internal Ġfun ĠContext . dip ( dp : ĠInt ): ĠInt Ġ{ ĊĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĠ Ġreturn ĠTyped Value . apply Dimension ( COMPLEX _ UNIT _ DIP , Ġdp . toFloat (), Ġmetrics ). toInt () Ċ } Ċ Ċ internal Ġfun ĠMenu Builder . set Callback ( listener : ĠPopup Menu . On MenuItem ClickListener ?) Ġ{ ĊĠ Ġset Callback ( object Ġ: ĠMenu Builder . Callback Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Menu Mode Change ( menu : ĠMenu Builder ) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon MenuItem Selected ( menu : ĠMenu Builder , Ġitem : ĠMenuItem ): ĠBoolean Ġ= ĊĠĠĠĠĠ Ġlistener ?. on MenuItem Click ( item ) Ġ?: Ġfalse ĊĠ Ġ}) Ċ } Ċ Ċ internal Ġclass ĠOver Scroll If Content Scroll s Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠ Ġoverride Ġfun Ġon Scroll StateChanged ( re cyclerView : ĠRecyclerView , ĠnewState : ĠInt ) Ġ= ĠUnit ĊĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( dy Ġ== Ġ 0 Ġ&& Ġdx Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠRecyclerView Ġsends Ġ 0 , 0 Ġif Ġthe Ġvisible Ġitem Ġrange Ġchanges Ġafter Ġa Ġlayout Ġcalculation . ĊĠĠĠĠĠ Ġval Ġcan Scroll Vertical Ġ= Ġre cyclerView . compute Vertical Scroll Range () Ġ> Ġre cyclerView . height ĊĠĠĠĠĠ Ġre cyclerView . over Scroll Mode Ġ= Ġif Ġ( can Scroll Vertical ) ĠOVER _ SCROLL _ ALWAYS Ġelse ĠOVER _ SCROLL _ NE VER ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠTyped Array . getResource Id OrNull (@ Style able Res Ġindex : ĠInt ): ĠInt ? Ġ{ ĊĠ Ġreturn Ġif Ġ( hasValue ( index )) Ġget ResourceId ( index , Ġ 0 ) Ġelse Ġnull Ċ } ĊĊ