限制条件:宽度、高度
h = fontMetricsInt.bottom - fontMetricsInt.top; 就是TextView的高度,包含了字高、边距、居中是由布局决定的
打印基线 private boolean adjustTopForAscent = true;
private Paint.FontMetricsInt fontMetricsInt;
@Override
protected void onDraw(Canvas canvas) {
//设置是否remove间距,true为remove
if (adjustTopForAscent) {
fontMetricsInt = new Paint.FontMetricsInt();
getPaint().getFontMetricsInt(fontMetricsInt);
Rect rect = new Rect(0, 0, getWidth(), fontMetricsInt.bottom);
Log.d("smarking", "onDraw " + rect.toString());
Paint paint = new Paint();
paint.setColor(getResources().getColor(R.color.cffff00));
paint.setStrokeWidth(1);
canvas.drawRect(rect, paint);
paint.setColor(getResources().getColor(R.color.colorPrimary));
canvas.drawLine((float) 0, (float) 0, (float) getWidth(), (float) 0, paint);
canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.ascent), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.ascent), paint);
canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.leading), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.leading), paint);
canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.descent), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.descent), paint);
canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.bottom), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.bottom), paint);
// canvas.translate(0, -(fontMetricsInt.bottom));
}
super.onDraw(canvas);
}
网友评论