1.宽度测量是比较简单的,直接使用 float textWidht=mPaint.measureText("加入购物车");
返回float类型的值即为字符串宽度值
2.高度测量
top跟ascent之间会有一定的间隙,当精确度要求不高时可以使用
Rect rect = new Rect();
String s="加入购物车";
mPaint.getTextBounds(s,0,s.length(),rect);//将字符串的长宽信息保存在rect里
int widht=rect.width();//字符串宽度
int height=rect.height();//字符串高度
1.基准点是baseline
2.ascent:是baseline之上至字符最高处的距离,为负值
3.descent:是baseline之下至字符最低处的距离,为正值
精确测量
方法一
float textHeight=mPaint.descent()-mPaint.ascent();
方法二
Paint.FontMetrics fm = mPaint.getFontMetrics();
float textHight=fm.descent-fm.ascent;
使用:
canvas.drawText(String text, float x, float y,Paint paint)方法用来画字符串,其中x为起始点的横坐标,注意y为baseline的纵坐标,而不是起始点的纵坐标
//mWidth是view的宽度,mHight是view的高度
mPaint.setTextSize(text_size);
float textWidth = mPaint.measureText("加入购物车");
canvas.drawText("加入购物车", (mWidht - textWidth) / 2,
(mHeight - (mPaint.descent() - mPaint.ascent())) / 2 - mPaint.ascent(), mPaint);