public static Point MeasureString(Context context, String text, float fontSize, int widthMeasureSpec, int heightMeasureSpec)
{
int width = 0;
int height = 0;
if (null == context || null == text || text.isEmpty() || 0 == fontSize){
return null;
}
TextView tv = new TextView(context);
tv.setText(text);// 待测文本
tv.setTextSize(fontSize);// 字体
if (LayoutParams.WRAP_CONTENT != widthMeasureSpec && LayoutParams.MATCH_PARENT != widthMeasureSpec) {
tv.setWidth(widthMeasureSpec);// 如果设置了宽度,字符串的宽度则为所设置的宽度
}
if (LayoutParams.WRAP_CONTENT != heightMeasureSpec && LayoutParams.MATCH_PARENT != heightMeasureSpec) {
tv.setHeight(heightMeasureSpec);
}
tv.setSingleLine(false);// 多行
tv.measure(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
width = tv.getMeasuredWidth();
height = tv.getMeasuredHeight();
Point point = new Point();
point.x = width;
point.y = height;
return point;
}
测试
StringUtils.MeasureString(this, "Hello world!\nabc\ndef", 30, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
StringUtils.MeasureString(this, "Hello world!\nabc", 30, 100, LayoutParams.WRAP_CONTENT);