Цель: 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;
похоже, работает более или менее нормально, но должен быть лучший способ.
Каждый раз, когда вы помещаете * Android * в заголовок вопроса, котенок умрет, поэтому прекратите это делать. Благодарю. –