package Ġcom . fs ck . k 9 . ui . drawer Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . fs ck . k 9 . ui . R Ċ Ċ /** Ċ Ġ* ĠHack Ġto Ġmake ĠMaterial Drawer 's Ġsticky Ġfooter Ġwork Ġwith Ġour Ġswipe - to - refresh Ġhack Ġ:( Ċ Ġ* Ċ Ġ* ĠMaterial Drawer Ġchanges Ġthe ĠLayout Params Ġon Ġthe ĠRecyclerView Ġso Ġit Ġends Ġabove Ġthe Ġsticky Ġheader . ĠBut Ġbecause Ġwe Ċ Ġ* Ġchanged Ġthe Ġview Ġhierarchy Ġto Ġsupport Ġswipe - to - refresh Ġthis Ġno Ġlonger Ġworks . ĠSo Ġwe Ġintercept Ġthe ĠLayout Params Ġchange Ċ Ġ* Ġand Ġforward Ġit Ġto Ġthe ĠSw ipe Refresh Layout Ġinstead . Ċ Ġ*/ Ċ class ĠMaterial Drawer Hack RecyclerView ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: ĠRecyclerView ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġset LayoutParams ( params : ĠViewGroup . LayoutParams ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( params Ġis ĠRelative Layout . LayoutParams ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Above Value Ġ= Ġparams . rules [ Relative Layout . AB O VE ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Above Value Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Layout Ġ= Ġroot View . findViewById < View >( R . id . material _ drawer _ swipe _ refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Params Ġ= Ġcontainer Layout . layout Params Ġas ĠRelative Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Params . add Rule ( Relative Layout . AB O VE , Ġlayout Above Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Layout . layout Params Ġ= Ġcontainer Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . setLayout Params ( params ) ĊĠĠĠ Ġ} Ċ } Ċ