Android drawText的使用以及居中问题

本文深入探讨了在Android中如何正确使用drawText方法进行文字的居中绘制,包括理解Baseline概念、利用Paint.FontMetrics计算居中显示的基线位置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值