在创建自定义视图时使用canvas.drawText()

时间:2015-04-10 09:38:59

标签: android canvas paint android-custom-view drawtext

我正在创建一个自定义视图,我必须在画布上的特定位置绘制文本。对于使用canvas.drawText(),我们必须创建一个paint对象,它必须在调用drawText()时作为参数传递。如果我想让文本呈现为居中对齐,我在制作绘图对象时使用setTextAlign()调用。

    statPaint.setTextAlign(Paint.Align.CENTER);

当我调用drawText()时,我需要设置要渲染的文本的起始点,如下所示。

    canvas.drawText(stat1,paddingLeft,paddingTop,statPaint);

paddingLeft和paddingTop告诉drawText()从哪里绘制文本。传递这两个参数对于函数调用是必需的。但我仍然无法使文本集中对齐。如何集中对齐此文本。

另外,如果我想在同一行中获得两个不同的文本,第一个在屏幕的前半部分居中对齐,第二个文本在屏幕的后半部分居中对齐,我该怎么办那?屏幕垂直分成两半。

提前致谢。

1 个答案:

答案 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);