package com.door43.translationstudio.core; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.LinearLayout; import com.door43.translationstudio.core.LinedEditText; /** * Created by blm on 12/7/2015. * LinearLayout with drawn lines */ public class LinedLinearLayout extends LinearLayout { private Rect mRect; private Paint mPaint; private boolean mEnableLines = false; private int mLineHeight = 0; private int mYOffset = -1; private int mFirstLineY = -1; private LinedEditText mEditText = null; public LinedLinearLayout(Context context) { super(context); drawInit(); } public LinedLinearLayout (Context context, AttributeSet attrs) { super(context, attrs); drawInit(); } @Override protected void onDraw(Canvas canvas) { boolean var = true; if (mEnableLines) { if (null != mEditText) { // get view position on screen int[] l = new int[2]; this.getLocationOnScreen(l); // int viewX = l[0]; int viewY = l[1]; Rect bounds = canvas.getClipBounds(); int bottom = bounds.bottom; int relativeY = mEditText.getYlocation() - viewY; int lineHeight = mEditText.getDistanceBetweenLines(); int offset = lineHeight / LinedEditText.mRelativeOffset; // offset so that text is above line int position = mEditText.getLinePosition() + relativeY + offset; for (int i = 0; i < 100; i++) { if (position > bottom) { break; } canvas.drawLine(bounds.left, position, bounds.right, position, mPaint); position += lineHeight; } } } super.onDraw(canvas); } public boolean isEnableLines() { return mEnableLines; } public void setEnableLines(boolean mEnableLines) { this.mEnableLines = mEnableLines; this.invalidate(); } private void drawInit() { mRect = new Rect(); mPaint = new Paint(); mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(0xFFC4E7FF); // same color as in GIF } public void setEditText(final LinedEditText mEditText) { this.mEditText = mEditText; } }