package com.beloo.widget.chipslayoutmanager.layouter; import android.graphics.Rect; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import com.beloo.widget.chipslayoutmanager.anchor.AnchorViewState; class ColumnsCreator implements ILayouterCreator { private RecyclerView.LayoutManager layoutManager; ColumnsCreator(RecyclerView.LayoutManager layoutManager) { this.layoutManager = layoutManager; } @Override public AbstractLayouter.Builder createBackwardBuilder() { return LeftLayouter.newBuilder(); } @Override public AbstractLayouter.Builder createForwardBuilder() { return RightLayouter.newBuilder(); } @Override public Rect createOffsetRectForBackwardLayouter(@NonNull AnchorViewState anchor) { Rect anchorRect = anchor.getAnchorViewRect(); return new Rect( anchorRect == null ? 0 : anchorRect.left, 0, anchorRect == null ? 0 : anchorRect.right, //we shouldn't include anchor view here, so anchorTop is a bottomOffset anchorRect == null ? 0 : anchorRect.top); } @Override public Rect createOffsetRectForForwardLayouter(@NonNull AnchorViewState anchor) { Rect anchorRect = anchor.getAnchorViewRect(); return new Rect( anchorRect == null ? anchor.getPosition() == 0 ? layoutManager.getPaddingLeft() : 0 : anchorRect.left, //we should include anchor view here, so anchorTop is a topOffset anchorRect == null ? layoutManager.getPaddingTop() : anchorRect.top, anchorRect == null ? anchor.getPosition() == 0 ? layoutManager.getPaddingRight() : 0 : anchorRect.right, 0); } }