package com.beloo.widget.chipslayoutmanager.gravity; import android.graphics.Rect; import com.beloo.widget.chipslayoutmanager.layouter.AbstractLayouter; import com.beloo.widget.chipslayoutmanager.layouter.Item; import java.util.List; class ColumnFillStrategy implements IRowStrategy { @Override public void applyStrategy(AbstractLayouter abstractLayouter, List<Item> row) { int difference = GravityUtil.getVerticalDifference(abstractLayouter) / abstractLayouter.getRowSize(); int offsetDifference = difference; for (Item item : row) { Rect childRect = item.getViewRect(); if (childRect.top == abstractLayouter.getCanvasTopBorder()) { //highest view of row int topDif = childRect.top - abstractLayouter.getCanvasTopBorder(); //press view to top border childRect.top = abstractLayouter.getCanvasTopBorder(); childRect.bottom -= topDif; //increase view height from bottom childRect.bottom += offsetDifference; continue; } childRect.top += offsetDifference; offsetDifference += difference; childRect.bottom += offsetDifference; } } }