我正在创建一个自定义视图,我必须在画布上的特定位置绘制文本。对于使用canvas.drawText(),我们必须创建一个paint对象,该对象在调用drawText()时必须作为参数传递。如果我想让文本呈现为中心对齐,我会在创建paint对象时使用setTextAlign()调用。
statPaint.setTextAlign(Paint.Align.CENTER);
另外,当我调用drawText()时,我需要设置要呈现的文本的起始点,如下所示。
canvas.drawText(stat1,paddingLeft,paddingTop,statPaint);
另外,如果我想在同一行中得到两个不同的文本,第一个文本在屏幕的前半部分居中对齐,第二个文本在屏幕的后半部分居中对齐,我该怎么做?屏幕垂直分为两半。
提前谢了。
以下是如何在任意矩形中居中文本(只需改变左/右/上/下)
// Allocated once as a member var, not in each onDraw
private Rect rect = new Rect();
// Inside onDraw
int left = 0;
int right = getWidth();
int top = 0;
int bottom = getHeight();
paint.getTextBounds(text, 0, text.length(), rect);
FontMetrics fm = paint.getFontMetrics();
float x = left + (right - left - rect.width()) / 2;
float y = top + (bottom - top) / 2 - (fm.descent + fm.ascent) / 2;
canvas.drawText(text, x, y, paint);