@@ -110,11 +110,11 @@ public boolean headerObscuringSomeItem(RecyclerView parent, View firstHeader) {
110110 return false ;
111111 }
112112
113- public void initHeaderBounds (Rect bounds , RecyclerView recyclerView , View header , View firstView , boolean firstHeader ) {
113+ public void initHeaderBounds (Rect bounds , RecyclerView recyclerView , View header , View firstView , boolean firstHeader , boolean enableStickyHeader ) {
114114 int orientation = mOrientationProvider .getOrientation (recyclerView );
115- initDefaultHeaderOffset (bounds , recyclerView , header , firstView , orientation );
115+ initDefaultHeaderOffset (bounds , recyclerView , header , firstView , orientation , enableStickyHeader );
116116
117- if (firstHeader && isStickyHeaderBeingPushedOffscreen (recyclerView , header )) {
117+ if (enableStickyHeader && firstHeader && isStickyHeaderBeingPushedOffscreen (recyclerView , header )) {
118118 View viewAfterNextHeader = getFirstViewUnobscuredByHeader (recyclerView , header );
119119 int firstViewUnderHeaderPosition = recyclerView .getChildAdapterPosition (viewAfterNextHeader );
120120 View secondHeader = mHeaderProvider .getHeader (recyclerView , firstViewUnderHeaderPosition );
@@ -123,19 +123,19 @@ public void initHeaderBounds(Rect bounds, RecyclerView recyclerView, View header
123123 }
124124 }
125125
126- private void initDefaultHeaderOffset (Rect headerMargins , RecyclerView recyclerView , View header , View firstView , int orientation ) {
126+ private void initDefaultHeaderOffset (Rect headerMargins , RecyclerView recyclerView , View header , View firstView , int orientation , boolean enableStickyHeader ) {
127127 int translationX , translationY ;
128128 mDimensionCalculator .initMargins (mTempRect1 , header );
129129 if (orientation == LinearLayoutManager .VERTICAL ) {
130130 translationX = firstView .getLeft () + mTempRect1 .left ;
131- translationY = Math . max (
132- firstView .getTop () - header .getHeight () - mTempRect1 .bottom ,
133- getListTop ( recyclerView ) + mTempRect1 . top ) ;
131+ translationY = enableStickyHeader ?
132+ Math . max ( firstView .getTop () - header .getHeight () - mTempRect1 .bottom , getListTop ( recyclerView ) + mTempRect1 . top ) :
133+ firstView . getTop () - header . getHeight () - mTempRect1 . bottom ;
134134 } else {
135135 translationY = firstView .getTop () + mTempRect1 .top ;
136- translationX = Math . max (
137- firstView .getLeft () - header .getWidth () - mTempRect1 .right ,
138- getListLeft ( recyclerView ) + mTempRect1 . left ) ;
136+ translationX = enableStickyHeader ?
137+ Math . max ( firstView .getLeft () - header .getWidth () - mTempRect1 .right , getListLeft ( recyclerView ) + mTempRect1 . left ) :
138+ firstView . getLeft () - header . getWidth () - mTempRect1 . right ;
139139 }
140140
141141 headerMargins .set (translationX , translationY , translationX + header .getWidth (),
0 commit comments