diff --git a/vlayout/src/main/java/com/alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java b/vlayout/src/main/java/com/alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java index fba34b7d..ec3d5f0a 100644 --- a/vlayout/src/main/java/com/alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java +++ b/vlayout/src/main/java/com/alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java @@ -1156,7 +1156,7 @@ protected int fill(RecyclerView.Recycler recycler, LayoutState layoutState, recycleByLayoutStateExpose(recycler, layoutState); } int remainingSpace = layoutState.mAvailable + layoutState.mExtra + ( - layoutState.mLayoutDirection == LayoutState.LAYOUT_START ? 0 : recycleOffset); //TODO ugly bug fix, should fix overlapOffset first + layoutState.mLayoutDirection == LayoutState.LAYOUT_START ? 0 : recycleOffset); //FIXME opt here to fix bg and shake while (remainingSpace > 0 && layoutState.hasMore(state)) { layoutChunkResultCache.resetInternal(); layoutChunk(recycler, state, layoutState, layoutChunkResultCache); @@ -1736,12 +1736,11 @@ public boolean assignFromViewIfValid(View child, RecyclerView.State state) { } public void assignFromView(View child) { - //TODO fixme coordinate if (mLayoutFromEnd) { mCoordinate = mOrientationHelper.getDecoratedEnd(child) + computeAlignOffset(child, mLayoutFromEnd, true) + - mOrientationHelper.getTotalSpaceChange() - ((LayoutParams) child.getLayoutParams()).mOverlapOffset; + mOrientationHelper.getTotalSpaceChange(); } else { - mCoordinate = mOrientationHelper.getDecoratedStart(child) + computeAlignOffset(child, mLayoutFromEnd, true) + ((LayoutParams) child.getLayoutParams()).mOverlapOffset; + mCoordinate = mOrientationHelper.getDecoratedStart(child) + computeAlignOffset(child, mLayoutFromEnd, true); } mPosition = getPosition(child); diff --git a/vlayout/src/main/java/com/alibaba/android/vlayout/VirtualLayoutManager.java b/vlayout/src/main/java/com/alibaba/android/vlayout/VirtualLayoutManager.java index 7b7b1aef..e7e17073 100644 --- a/vlayout/src/main/java/com/alibaba/android/vlayout/VirtualLayoutManager.java +++ b/vlayout/src/main/java/com/alibaba/android/vlayout/VirtualLayoutManager.java @@ -852,8 +852,6 @@ public static class LayoutParams extends RecyclerView.LayoutParams { public int zIndex = 0; - public int mOverlapOffset = 0; - public float mAspectRatio = Float.NaN; private int mOriginWidth = INVALIDE_SIZE; diff --git a/vlayout/src/main/java/com/alibaba/android/vlayout/layout/RangeGridLayoutHelper.java b/vlayout/src/main/java/com/alibaba/android/vlayout/layout/RangeGridLayoutHelper.java index 0c71afed..12b210db 100644 --- a/vlayout/src/main/java/com/alibaba/android/vlayout/layout/RangeGridLayoutHelper.java +++ b/vlayout/src/main/java/com/alibaba/android/vlayout/layout/RangeGridLayoutHelper.java @@ -250,7 +250,6 @@ public void layoutViews(RecyclerView.Recycler recycler, RecyclerView.State state rangeStyle.mSpanCount - 1) * rangeStyle.mVGap) * 1.0f / rangeStyle.mSpanCount + 0.5f); } - int maxOverlapOffset = 0; int count = 0; int consumedSpanCount = 0; int remainingSpan = rangeStyle.mSpanCount; @@ -466,10 +465,6 @@ public void layoutViews(RecyclerView.Recycler recycler, RecyclerView.State state View.MeasureSpec.EXACTLY); } final LayoutParams lp = (LayoutParams) view.getLayoutParams(); - if (lp.mOverlapOffset > maxOverlapOffset) { - maxOverlapOffset = lp.mOverlapOffset; - } - if (helper.getOrientation() == VERTICAL) { helper.measureChildWithMargins(view, spec, getMainDirSpec(rangeStyle, lp.height, mTotalSize, View.MeasureSpec.getSize(spec), lp.mAspectRatio)); @@ -536,7 +531,7 @@ public void layoutViews(RecyclerView.Recycler recycler, RecyclerView.State state } - result.mConsumed = maxSize + startSpace + endSpace + secondStartSpace + secondEndSpace - maxOverlapOffset; //FIXME conflicts when layout to start + result.mConsumed = maxSize + startSpace + endSpace + secondStartSpace + secondEndSpace; final boolean layoutStart = layoutState.getLayoutDirection() == LayoutStateWrapper.LAYOUT_START; int consumedGap = 0; @@ -625,18 +620,18 @@ public void layoutViews(RecyclerView.Recycler recycler, RecyclerView.State state int left = 0, right = 0, top = 0, bottom = 0; if (layoutInVertical) { if (layoutStart) { - bottom = layoutState.getOffset() - endSpace - secondEndSpace - (consumedGap) - lastUnconsumedSpace - maxOverlapOffset; //FIXME should minus maxOverlapOffset + bottom = layoutState.getOffset() - endSpace - secondEndSpace - (consumedGap) - lastUnconsumedSpace; top = bottom - maxSize; } else { - top = layoutState.getOffset() + startSpace + secondStartSpace + (consumedGap) + lastUnconsumedSpace - maxOverlapOffset; + top = layoutState.getOffset() + startSpace + secondStartSpace + (consumedGap) + lastUnconsumedSpace; bottom = top + maxSize; } } else { if (layoutStart) { - right = layoutState.getOffset() - endSpace - (consumedGap) - lastUnconsumedSpace + maxOverlapOffset; + right = layoutState.getOffset() - endSpace - (consumedGap) - lastUnconsumedSpace; left = right - maxSize; } else { - left = layoutState.getOffset() + startSpace + (consumedGap) + lastUnconsumedSpace - maxOverlapOffset; + left = layoutState.getOffset() + startSpace + (consumedGap) + lastUnconsumedSpace; right = left + maxSize; } }