8

在此方法文档中,它写道:

x   The x-coordinate of origin for where to draw the text
y   The y-coordinate of origin for where to draw the text

但它没有说明这个文本的绘制方向。我知道文本是从原点向上绘制的,但是当我给出以下参数时,我的文本会被剪切:

canvas.drawText(displayText, 0, canvas.getHeight(), textPaint);

另外,假设我正在使用 Align.LEFT (意味着文本绘制在 x,y 原点的右侧)

那么正确的论点应该是什么(假设我不想使用固定数字)?

4

2 回答 2

5

这是我最终使用的:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    if (textAlignment == Align.CENTER) {
        canvas.drawText(displayText, canvas.getWidth()/2, canvas.getHeight()-TEXT_PADDING, textPaint);  
    }
    else if (textAlignment == Align.RIGHT) {
        canvas.drawText(displayText, canvas.getWidth()-TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint);   
    }
    else if (textAlignment == Align.LEFT) {
        canvas.drawText(displayText, TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    }   
    //canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p);
}

两条评论:

  1. TEXT_PADDING 是我在运行时转换为像素的 dp 尺寸(在我的情况下为 3dp)。
  2. 您可以取消注释最后一行以在画布周围绘制矩形以进行调试。
于 2013-03-02T08:29:03.960 回答
1

也许您可以使用以下代码段来查看它是否工作:

int width = this.getMeasuredWidth()/2;
int height = this.getMeasuredHeight()/2;
textPaint.setTextAlign(Align.LEFT);
canvas.drawText(displayText, width, height, textPaint);

在我的情况下,宽度和高度只是任意计算的。

于 2013-03-01T19:21:31.560 回答