android中如何获取一个字符串占用的宽度(长度)
这里说的是一个字符串占用的空间大小,而不是字符串字符个数。
在安卓中,绘制一个字符串的方法是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,出现在这里的原因是日历有些功能需要这个参数,其实是完全可以去掉的。