1. 程式人生 > >canvas.drawText文字居中(備忘)

canvas.drawText文字居中(備忘)

使用了canvas.drawText(String text, float x, float y, Paint paint) 這個API,發現在設定x,y讓文字居中時會有點問題,X的設定的話應該是可以通過設定 paint.setTextAlign(Paint.Align.CENTER)讓文字水平居中的,而在設定垂直居中時你會發現,y值是上圖的baseline(base)高度,所以要獲取整個文字的中心點到base的長度。

然後首先要獲取字型的總高度,程式碼如下

FontMetrics fontMetrics = paint.getFontMetrics();
float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;  

如果打log,你會發現fontMetrics.bottom為一個正數,在我的程式碼中,大概為9.6

fontMetrics.top為一個負數,大概為-36.4,所以這裡我覺得baselineY軸為0,那麼中心點到base的長度為float offY = fontTotalHeight / 2 - fontMetrics.bottom;

其實以上都是本人猜想,如果有錯就指點一下哈,不過我估計沒多少人會看到  哈哈哈哈