测量字符串宽高

1.宽度测量是比较简单的,直接使用 float textWidht=mPaint.measureText("加入购物车");返回float类型的值即为字符串宽度值
2.高度测量

Paste_Image.png

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);

你可能感兴趣的:(测量字符串宽高)