From 0c4edc4eefb02b45814e5784eb085feaeeb8a42e Mon Sep 17 00:00:00 2001 From: longerian Date: Tue, 10 Oct 2017 20:03:57 +0800 Subject: [PATCH] disable pre-layout when layout to start temp --- .../alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java | 3 ++- .../alibaba/android/vlayout/layout/RangeGridLayoutHelper.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) 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 634a666..3391791 100644 --- a/vlayout/src/main/java/com/alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java +++ b/vlayout/src/main/java/com/alibaba/android/vlayout/ExposeLinearLayoutManagerEx.java @@ -1153,7 +1153,8 @@ class ExposeLinearLayoutManagerEx extends LinearLayoutManager { } recycleByLayoutStateExpose(recycler, layoutState); } - int remainingSpace = layoutState.mAvailable + layoutState.mExtra + recycleOffset; + int remainingSpace = layoutState.mAvailable + layoutState.mExtra + ( + layoutState.mLayoutDirection == LayoutState.LAYOUT_START ? 0 : recycleOffset); //TODO ugly bug fix, should fix overlapOffset first while (remainingSpace > 0 && layoutState.hasMore(state)) { layoutChunkResultCache.resetInternal(); layoutChunk(recycler, state, layoutState, layoutChunkResultCache); 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 e61206d..3372629 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 @@ -536,7 +536,7 @@ public class RangeGridLayoutHelper extends BaseLayoutHelper { } - result.mConsumed = maxSize + startSpace + endSpace + secondStartSpace + secondEndSpace - maxOverlapOffset; + result.mConsumed = maxSize + startSpace + endSpace + secondStartSpace + secondEndSpace - maxOverlapOffset; //FIXME conflicts when layout to start final boolean layoutStart = layoutState.getLayoutDirection() == LayoutStateWrapper.LAYOUT_START; int consumedGap = 0; @@ -625,7 +625,7 @@ public class RangeGridLayoutHelper extends BaseLayoutHelper { int left = 0, right = 0, top = 0, bottom = 0; if (layoutInVertical) { if (layoutStart) { - bottom = layoutState.getOffset() - endSpace - secondEndSpace - (consumedGap) - lastUnconsumedSpace + maxOverlapOffset; + bottom = layoutState.getOffset() - endSpace - secondEndSpace - (consumedGap) - lastUnconsumedSpace + maxOverlapOffset; //FIXME should minus maxOverlapOffset top = bottom - maxSize; } else { top = layoutState.getOffset() + startSpace + secondStartSpace + (consumedGap) + lastUnconsumedSpace - maxOverlapOffset;