diff --git a/viewpagerlayoutmanager/src/main/java/com/leochuan/ViewPagerLayoutManager.java b/viewpagerlayoutmanager/src/main/java/com/leochuan/ViewPagerLayoutManager.java index 9ac07c2..f4abc36 100644 --- a/viewpagerlayoutmanager/src/main/java/com/leochuan/ViewPagerLayoutManager.java +++ b/viewpagerlayoutmanager/src/main/java/com/leochuan/ViewPagerLayoutManager.java @@ -383,14 +383,6 @@ public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State } measureChildWithMargins(scrap, 0, 0); - mDecoratedMeasurement = mOrientationHelper.getDecoratedMeasurement(scrap); - mDecoratedMeasurementInOther = mOrientationHelper.getDecoratedMeasurementInOther(scrap); - mSpaceMain = (mOrientationHelper.getTotalSpace() - mDecoratedMeasurement) / 2; - if (mDistanceToBottom == INVALID_SIZE) { - mSpaceInOther = (mOrientationHelper.getTotalSpaceInOther() - mDecoratedMeasurementInOther) / 2; - } else { - mSpaceInOther = mOrientationHelper.getTotalSpaceInOther() - mDecoratedMeasurementInOther - mDistanceToBottom; - } mInterval = setInterval(); setUp(); @@ -416,6 +408,17 @@ public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State layoutItems(recycler); } + private void calChildSpaceAndSpace(View scrap) { + mDecoratedMeasurement = mOrientationHelper.getDecoratedMeasurement(scrap); + mDecoratedMeasurementInOther = mOrientationHelper.getDecoratedMeasurementInOther(scrap); + mSpaceMain = (mOrientationHelper.getTotalSpace() - mDecoratedMeasurement) / 2; + if (mDistanceToBottom == INVALID_SIZE) { + mSpaceInOther = (mOrientationHelper.getTotalSpaceInOther() - mDecoratedMeasurementInOther) / 2; + } else { + mSpaceInOther = mOrientationHelper.getTotalSpaceInOther() - mDecoratedMeasurementInOther - mDistanceToBottom; + } + } + private View getMeasureView(RecyclerView.Recycler recycler, RecyclerView.State state, int index) { if (index >= state.getItemCount() || index < 0) return null; try { @@ -718,6 +721,7 @@ private void resetViewProperty(View v) { private void layoutScrap(View scrap, float targetOffset) { final int left = calItemLeft(scrap, targetOffset); final int top = calItemTop(scrap, targetOffset); + calChildSpaceAndSpace(scrap); if (mOrientation == VERTICAL) { layoutDecorated(scrap, mSpaceInOther + left, mSpaceMain + top, mSpaceInOther + left + mDecoratedMeasurementInOther, mSpaceMain + top + mDecoratedMeasurement);