您的位置:首页 > 移动开发 > Android开发

Android 文本框实现类似笔记本那样的带行线的效果

2017-03-23 14:53 316 查看
这是一个小伙伴写的(他也是抄的,作者已佚名),我觉得写的挺好,自己又改了改,在此记录一下:

public class LinedTextView extends TextView {
public LinedTextView(Context context) {
super(context);
}

public LinedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public LinedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
protected void onDraw(Canvas canvas) {
Paint mPaint = new Paint();
//       mPaint.setColor(0x80000000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(1);
mPaint.setColor(Color.BLACK);

int right = getRight();
int paddingTop = getPaddingTop();
int paddingBottom = getPaddingBottom();
int paddingLeft = getPaddingLeft();
int paddingRight = getPaddingRight();
int height = getHeight();
int lineHeight = getLineHeight();
int spacingHeight = (int) Utils.dip2px(2);
if (Build.VERSION.SDK_INT >= 16) {
spacingHeight = (int) getLineSpacingExtra();
}
height = height + spacingHeight;//把最后一个行间距也计算进去
int count = (height - paddingTop - paddingBottom) / lineHeight;

for (int i = 0; i < count; i++) {
int baseline = lineHeight * (i + 1) + paddingTop - spacingHeight / 2;
canvas.drawLine(0 + paddingLeft, baseline, right - paddingRight, baseline, mPaint);
}
super.onDraw(canvas);
}
}


如果你觉得帮到了你,请给作者打赏一口饭吃:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: