我正在创建一个自定义视图,我必须在画布上的特定位置绘制文本。对于使用canvas.drawText(),我们必须创建一个paint对象,它必须在调用drawText()时作为参数传递。如果我想让文本呈现为居中对齐,我在制作绘图对象时使用setTextAlign()调用。
statPaint.setTextAlign(Paint.Align.CENTER);
当我调用drawText()时,我需要设置要渲染的文本的起始点,如下所示。
canvas.drawText(stat1,paddingLeft,paddingTop,statPaint);
paddingLeft和paddingTop告诉drawText()从哪里绘制文本。传递这两个参数对于函数调用是必需的。但我仍然无法使文本集中对齐。如何集中对齐此文本。
另外,如果我想在同一行中获得两个不同的文本,第一个在屏幕的前半部分居中对齐,第二个文本在屏幕的后半部分居中对齐,我该怎么办那?屏幕垂直分成两半。
提前致谢。
答案 0 :(得分:0)
以下是如何将文本置于任何矩形中心(只需更改左/右/上/下)
// 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);