package Ġlp zm rc . test . dj un gle . io . ui . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Dim en Res Ċ import Ġandroidx . annotation . Integer Res Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠGrid Spacing Item Decoration ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġ@ Integer Res ĊĠĠĠ Ġspan Count Res : ĠInt , ĊĠĠĠ Ġ@ Dim en Res ĊĠĠĠ Ġspacing Res : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġinclude Edge : ĠBoolean Ċ ) Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĊĠĠĠ Ġval Ġspan Count Ġ= Ġcontext . resources . getInteger ( span Count Res ) ĊĠĠĠ Ġval Ġspacing Ġ= Ġcontext . resources . get Dimension Pixel Size ( spacing Res ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( out Rect : ĠRect , Ġview : ĠView , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġparent . getChild Adapter Position ( view ) Ġ// Ġitem Ġposition ĊĠĠĠĠĠĠĠ Ġval Ġspan Size Ġ= Ġ( parent . layout Manager Ġas ? ĠGrid LayoutManager )?. span Size Lookup ?. get Span Size ( position ) Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġposition Ġ% Ġspan Count Ġ// Ġitem Ġcolumn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( include Edge ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġspacing Ġ- Ġcolumn Ġ* Ġspacing Ġ/ Ġspan Count Ġ* Ġspan Size Ġ// Ġspacing Ġ- Ġcolumn Ġ* Ġ(( 1 f Ġ/ Ġspan Count ) Ġ* Ġspacing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġ( column Ġ+ Ġ 1 ) Ġ* Ġspacing Ġ/ Ġspan Count Ġ* Ġspan Size // Ġ( column Ġ+ Ġ 1 ) Ġ* Ġ(( 1 f Ġ/ Ġspan Count ) Ġ* Ġspacing ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ< Ġspan Count ) Ġ{ Ġ// Ġtop Ġedge ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġspacing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . bottom Ġ= Ġspacing Ġ// Ġitem Ġbottom ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . left Ġ= Ġcolumn Ġ* Ġspacing Ġ/ Ġspan Count Ġ* Ġspan Size // Ġcolumn Ġ* Ġ(( 1 f Ġ/ Ġspan Count ) Ġ* Ġspacing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . right Ġ= Ġspacing Ġ- Ġ( column Ġ+ Ġ 1 ) Ġ* Ġspacing Ġ/ Ġspan Count Ġ* Ġspan Size Ġ// Ġspacing Ġ- Ġ( column Ġ+ Ġ 1 ) Ġ* Ġ(( 1 f Ġ/ ĠĠĠ Ġspan Count ) Ġ* Ġspacing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ>= Ġspan Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . top Ġ= Ġspacing Ġ// Ġitem Ġtop ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }