package edu.mit.mitmobile2.dining; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import edu.mit.mitmobile2.AttributesParser; public class DiningDividerLinearLayout extends LinearLayout { private Integer mDividerColor; private boolean mDrawDivider = true; private int mStrokeWidth; public DiningDividerLinearLayout(Context context) { super(context); init(context); } public DiningDividerLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public boolean getDrawHorizontalDivider() { return mDrawDivider; } public void setDrawHorizontalDivider(boolean mDrawDivider) { this.mDrawDivider = mDrawDivider; } private void init(Context context) { mStrokeWidth = AttributesParser.parseDimension("1dip", context); } public void setDividerColor(int dividerColor){ mDividerColor = dividerColor; } @Override public void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); if (mDividerColor == null) { return; } Paint dividerPaint = new Paint(); dividerPaint.setStrokeWidth(mStrokeWidth); dividerPaint.setColor(mDividerColor); if (getOrientation() == HORIZONTAL) { int x = 0; int height = getHeight(); for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); x += child.getWidth(); if (child.getVisibility() == View.VISIBLE && x < getWidth()) { canvas.drawLine(x, 0, x, height, dividerPaint); } } } else if (getOrientation() == VERTICAL) { int y = 0; int width = getWidth(); for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); y += child.getHeight(); if (child.getVisibility() == View.VISIBLE && y < getHeight() && mDrawDivider) { canvas.drawLine(0, y, width, y, dividerPaint); } } } } }