Skip to content

Commit 54e0bdc

Browse files
author
jacob-tabak
committed
Fix issues with recyclerview items with margins
1 parent 0ba0fa3 commit 54e0bdc

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.support.v7.widget.LinearLayoutManager;
55
import android.support.v7.widget.RecyclerView;
66
import android.view.View;
7+
import android.view.ViewGroup;
78
import android.widget.LinearLayout;
89

910
import com.timehop.stickyheadersrecyclerview.caching.HeaderProvider;
@@ -110,15 +111,25 @@ public void initHeaderBounds(Rect bounds, RecyclerView recyclerView, View header
110111
private void initDefaultHeaderOffset(Rect headerMargins, RecyclerView recyclerView, View header, View firstView, int orientation) {
111112
int translationX, translationY;
112113
mDimensionCalculator.initMargins(mTempRect1, header);
114+
115+
ViewGroup.LayoutParams layoutParams = firstView.getLayoutParams();
116+
int leftMargin = 0;
117+
int topMargin = 0;
118+
if (layoutParams instanceof ViewGroup.MarginLayoutParams) {
119+
ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams;
120+
leftMargin = marginLayoutParams.leftMargin;
121+
topMargin = marginLayoutParams.topMargin;
122+
}
123+
113124
if (orientation == LinearLayoutManager.VERTICAL) {
114-
translationX = firstView.getLeft() + mTempRect1.left;
125+
translationX = firstView.getLeft() - leftMargin + mTempRect1.left;
115126
translationY = Math.max(
116-
firstView.getTop() - header.getHeight() - mTempRect1.bottom,
127+
firstView.getTop() - topMargin - header.getHeight() - mTempRect1.bottom,
117128
getListTop(recyclerView) + mTempRect1.top);
118129
} else {
119-
translationY = firstView.getTop() + mTempRect1.top;
130+
translationY = firstView.getTop() - topMargin + mTempRect1.top;
120131
translationX = Math.max(
121-
firstView.getLeft() - header.getWidth() - mTempRect1.right,
132+
firstView.getLeft() - leftMargin - header.getWidth() - mTempRect1.right,
122133
getListLeft(recyclerView) + mTempRect1.left);
123134
}
124135

0 commit comments

Comments
 (0)