Android TextPaint 写文字 水平、垂直居中

在宽width高height的画布上画一字符串,使字符串水平竖直居中: 


1、水平居中的方法:

 第一步:水平居中很简单,paint.setTextAlign(Align.CENTER);

第二步:drawText的x坐标设置为width / 2即可,


2、垂直居中的方法:

竖直居中稍显麻烦,可以使用FontMetrics对象计算文字高度,然后计算baseline,使文字垂直居中,代码如下: 


Paint paint = new Paint(); 
paint.setColor(Color.BLUE); 
paint.setTextSize(18); 
paint.setTextAlign(Align.CENTER); 

FontMetrics fontMetrics = paint.getFontMetrics(); 
// 计算文字高度 
float fontHeight = fontMetrics.bottom - fontMetrics.top; 
// 计算文字baseline 
float textBaseY = height - (height - fontHeight) / 2 - fontMetrics.bottom; 

canvas.drawText(text, width / 2, textBaseY, paint);


示例代码如下:


        textPaint.setColor(this.innerTextColor);
        textPaint.setAntiAlias(true);
        textPaint.setTextAlign(Align.CENTER);
        textPaint.setTextSize(this.innerTextSize);
        
        FontMetrics fontMetrics = textPaint.getFontMetrics();
        // 计算文字高度
        float fontHeight = fontMetrics.bottom - fontMetrics.top;
        // 计算文字baseline
        float textBaseY = bounds.height() - (bounds.height() - fontHeight) / 2 - fontMetrics.bottom;

        canvas.drawText( this.innerText , bounds.width() / 2, textBaseY, textPaint);



你可能感兴趣的:(Android)