如何垂直对齐文本?以 和 为中心的示例:cxcy为什么工作原理不一样?height()/2f
目标:Android >= 1.6 在纯画布上。
假设我想编写一个函数,该函数将绘制一个(宽度,高度)红色大矩形,然后在其中绘制一个黑色的Hello World文本。我希望文本在视觉上位于矩形的中心。所以让我们试试:
void drawHelloRectangle(Canvas c, int topLeftX,
int topLeftY, int width, int height) {
Paint mPaint = new Paint();
// height of 'Hello World'; height*0.7 looks good
int fontHeight = (int)(height*0.7);
mPaint.setColor(COLOR_RED);
mPaint.setStyle(Style.FILL);
c.drawRect( topLeftX, topLeftY, topLeftX+width, topLeftY+height, mPaint);
mPaint.setTextSize(fontHeight);
mPaint.setColor(COLOR_BLACK);
mPaint.setTextAlign(Align.CENTER);
c.drawText( "Hello World", topLeftX+width/2, ????, mPaint);
}
现在我不知道在drawText的参数中放置什么,标记为,即我不知道如何垂直对齐文本。????
类似的东西
????= topLeftY + height/2 + fontHeight/2 - fontHeight/8;
看起来或多或少工作还行,但一定有更好的方法。