这里说的是一个字符串占用的空间大小,而不是字符串字符个数。

在安卓中,绘制一个字符串的方法是canvas.drawText()方法,但是这个方法用起来相当的麻烦,首先,他不能根据父容器宽度自动换行,如果你的字符串很长,他只会绘制一行字符串,不管是不是超出范围,因此,很多时候需要我们自己判断一个字符串的宽度。

我从日历calendar代码的dayview类中找到了实现这一功能的方法:private int computeMaxStringWidth(int currentMax, String[] strings, Paint p) {

float maxWidthF = 0.0f;

int len = strings.length;

for (int i = 0; i < len; i++) {

float width = p.measureText(strings[i]);

maxWidthF = Math.max(width, maxWidthF);

}

int maxWidth = (int) (maxWidthF + 0.5);

if (maxWidth < currentMax) {

maxWidth = currentMax;

}

return maxWidth;

}

这里面关键的是p.measureText()方法,他返回的应该是px为单位的int类型。

computeMaxStringWidth方法的第一个参数可以设置为0,出现在这里的原因是日历有些功能需要这个参数,其实是完全可以去掉的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐