String str = "Hello"; canvas.drawText( str , x , y , paint); //1. 粗略计算文字宽度 Log.d(TAG, "measureText=" + paint.measureText(str)); //2. 计算文字所在矩形,可以得到宽高 Rect rect = new Rect(); paint.getTextBounds(str, 0, str.length(), rect); int w = rect.width(); int h = rect.height(); Log.d(TAG, "w=" +w+" h="+h); //3. 精确计算文字宽度 int textWidth = getTextWidth(paint, str); Log.d(TAG, "textWidth=" + textWidth); public static int getTextWidth(Paint paint, String str) { int iRet = 0; if (str != null && str.length() > 0) { int len = str.length(); float[] widths = new float[len]; paint.getTextWidths(str, widths); for (int j = 0; j < len; j++) { iRet += (int) Math.ceil(widths[j]); } } return iRet; }
转载自:http://blog.csdn.net/chuekup/article/details/7518239