Android drawText的使用以及居中问题

Android drawText的使用以及居中问题

一、BaseLine

在Android中,画文字的位置和画图形的位置是有些不太一样的。
画图形是从图形的left和top的位置开始往右下方向画,这个不再详细说明。

而画文字是从文字的左边和文字的baseline往右上方画,所以如果将文字画在0,0 的位置上,
那么你就只能看到文字底部的一点点了,其实就是baseline下面的一点点内容,这时候y=0其实就是baseline了。
因此在使用drawText(text, x, y, paint)方法的时候,y传入的应该是你通过计算好的值;

drawText(text, x, y, paint)

二、Paint.FontMetrics

FontMetrics里面获取字体绘制的属性,通过修正得到居中显示的baseline:

Rect targetRect = new Rect(50, 50, 1000, 200);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setStrokeWidth(3);
    paint.setTextSize(80);
    String testString = "测试:ijkJQKA:1234";
    paint.setColor(Color.CYAN);
    canvas.drawRect(targetRect, paint);
    paint.setColor(Color.RED);
    FontMetricsInt fontMetrics = paint.getFontMetricsInt();
    int baseline = (targetRect.bottom + targetRect.top - fontMetrics.bottom - fontMetrics.top) / 2;
    // 下面这行是实现水平居中,drawText对应改为传入targetRect.centerX()
    paint.setTextAlign(Paint.Align.CENTER);
    canvas.drawText(testString, targetRect.centerX(), baseline, paint);
发布了39 篇原创文章 · 获赞 14 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览