Android笔记 自定义控件时drawText字符串宽度的3种计算方式

本文详细介绍了在自定义控件中使用drawText方法绘制文本时,如何通过粗略和精确计算文字宽度来获取绘制坐标,以便在已有文本后面继续绘制。包括使用mPaint测量文本宽度、获取文本矩形尺寸、以及实现精确宽度计算的函数。旨在帮助开发者高效地在图形界面中布局文本与图标。

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

    我们经常在做自定义控件的时候,有些控件是需要图文一起显示的,显示文字就肯定要用到drawText 方法,而drawText(str, x, y, paint)有两个参数x 和 y是绘制的坐标,我们必须确定这个坐标之后,才能知道从哪里绘制,有时候我们绘制完一个字符串,而想在这个字符串的后面重新进行一些绘制的时候,就需要重新获取绘制坐标,这个时候首先想到的就是得到前一个字符串的绘制宽度 + 前一个字符串的绘制坐标就可以推算我们现在绘制的坐标了。

String str = "hello"; canvas.drawText(str, x, y, mPaint); //1. 粗略计算文字宽度: float width = mPaint.measureText(str); //2. 计算文字的矩形,可以得到宽高: Rect rect = new Rect(); mPaint.getTextBounds(str, 0, str.length(), rect); int w = rect.width(); int h = rect.height(); //3. 精确计算文字的宽度: public static int getTextWidth(Paint mPaint, String str) { float iSum = 0; if(str != null && !str.equals("")) { int len = str.length(); float widths[] = new float[len]; paint.getTextWidths(str, widths); for(int i = 0; i < len; i++) { iSum += Math.ceil(widths[i]) } } return (int)iSum; }

 

转载于:https://www.cnblogs.com/liujianli405/p/4650547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值