diff --git a/library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java b/library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java
index 5f4727d..ad00dd6 100644
--- a/library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java
+++ b/library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java
@@ -105,14 +105,14 @@ private Rect getDefaultHeaderOffset(RecyclerView recyclerView, View header, View
int translationX, translationY;
Rect headerMargins = mDimensionCalculator.getMargins(header);
if (orientation == LinearLayoutManager.VERTICAL) {
- translationX = firstView.getLeft() + headerMargins.left;
+ translationX = (int) firstView.getX() + headerMargins.left;
translationY = Math.max(
- firstView.getTop() - header.getHeight() - headerMargins.bottom,
+ (int) firstView.getY() - header.getHeight() - headerMargins.bottom,
getListTop(recyclerView) + headerMargins.top);
} else {
- translationY = firstView.getTop() + headerMargins.top;
+ translationY = (int) firstView.getY() + headerMargins.top;
translationX = Math.max(
- firstView.getLeft() - header.getWidth() - headerMargins.right,
+ (int) firstView.getX() - header.getWidth() - headerMargins.right,
getListLeft(recyclerView) + headerMargins.left);
}
diff --git a/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/DividerDecoration.java b/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/DividerDecoration.java
index 9321961..0b11b04 100644
--- a/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/DividerDecoration.java
+++ b/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/DividerDecoration.java
@@ -60,7 +60,7 @@ public void drawVertical(Canvas c, RecyclerView parent) {
final View child = parent.getChildAt(i);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
.getLayoutParams();
- final int top = Math.max(recyclerViewTop, child.getBottom() + params.bottomMargin);
+ final int top = Math.max(recyclerViewTop, child.getBottom() + (int) child.getTranslationY() + params.bottomMargin);
final int bottom = Math.min(recyclerViewBottom, top + mDivider.getIntrinsicHeight());
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
@@ -77,7 +77,7 @@ public void drawHorizontal(Canvas c, RecyclerView parent) {
final View child = parent.getChildAt(i);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
.getLayoutParams();
- final int left = Math.max(recyclerViewLeft, child.getRight() + params.rightMargin);
+ final int left = Math.max(recyclerViewLeft, child.getRight() + (int) child.getTranslationX() + params.rightMargin);
final int right = Math.min(recyclerViewRight, left + mDivider.getIntrinsicHeight());
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
diff --git a/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/MainActivity.java b/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/MainActivity.java
index 08de19a..3c2032c 100644
--- a/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/MainActivity.java
+++ b/sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/MainActivity.java
@@ -25,6 +25,8 @@
public class MainActivity extends Activity {
+ public static final String ANIMALS_BELOW = "Animals below!";
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -32,6 +34,7 @@ protected void onCreate(Bundle savedInstanceState) {
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
Button button = (Button) findViewById(R.id.button_update);
+ Button buttonAdd = (Button) findViewById(R.id.button_add);
final ToggleButton isReverseButton = (ToggleButton) findViewById(R.id.button_is_reverse);
// Set adapter populated with example dummy data
@@ -57,6 +60,18 @@ public void run() {
}
});
+ // Add/remove item to the top of list (Test animations)
+ buttonAdd.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (ANIMALS_BELOW.equals(mAdapter.getItem(0))) {
+ mAdapter.remove(ANIMALS_BELOW);
+ } else {
+ mAdapter.add(0, ANIMALS_BELOW);
+ }
+ }
+ });
+
// Set layout manager
int orientation = getLayoutManagerOrientation(getResources().getConfiguration().orientation);
final LinearLayoutManager layoutManager = new LinearLayoutManager(this, orientation, isReverseButton.isChecked());
@@ -122,7 +137,7 @@ private class SampleArrayHeadersAdapter extends RecyclerArrayAdapter
+
+
StickyHeadersRecyclerView
- Start Update
+ Update
Is reverse
+ Add/Remove