package com.thekhaeng.recyclerviewmargin; import android.graphics.Rect; import android.support.annotation.IntRange; import android.support.annotation.Px; import android.support.v7.widget.OrientationHelper; /** * Created by thekhaeng on 4/13/2017 AD. */ class MarginDelegate{ private final int spanCount; private final int spaceItem; MarginDelegate( int spanCount, @Px int spaceItem ){ this.spanCount = spanCount; this.spaceItem = spaceItem; } void calculateMargin( Rect outRect, int position, int spanCurrent, int itemCount, @IntRange( from = 0, to = 1 ) int orientation, boolean isReverse, boolean isRTL ){ if( orientation == OrientationHelper.VERTICAL ){ outRect.left = spanCurrent * spaceItem / spanCount; outRect.right = spaceItem - ( spanCurrent + 1 ) * spaceItem / spanCount; if( isReverse ){ if( position >= spanCount ) outRect.bottom = spaceItem; }else{ if( position >= spanCount ) outRect.top = spaceItem; } }else if( orientation == OrientationHelper.HORIZONTAL ){ outRect.top = spanCurrent * spaceItem / spanCount; outRect.bottom = spaceItem - ( spanCurrent + 1 ) * spaceItem / spanCount; if( isReverse ){ if( position >= spanCount ) outRect.right = spaceItem; }else{ if( position >= spanCount ) outRect.left = spaceItem; } } } }