【发布时间】:2011-06-22 00:23:00
【问题描述】:
目标:纯 Canvas 上的 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 + 高度/2 + fontHeight/2 - fontHeight/8;
看起来或多或少都可以,但一定有更好的方法。
【问题讨论】:
-
每次您在问题标题中输入 Android 都会有一只小猫死去,所以请停止这样做。谢谢。
-
9 年后,这个问题和接受的答案仍然相关
标签: java android canvas drawtext