2013-02-28 35 views
6

在此方法文檔它撰文指出:Canvas.drawText()如何真的繪製文本?

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原點的右邊)

那麼什麼是正確的論據應該是(假設我不想使用固定數字)?

+0

也許這就是你要找的東西(查看對答案的評論)。 http://stackoverflow.com/questions/10606410/android-canvas-drawtext-y-position-of-text – 2013-02-28 09:52:53

+0

文本如何被剪切?是否有任何文字顯示? – Barney 2013-02-28 10:01:06

+0

如果您嘗試將canvas的設置值設置爲canvas.getHeight()/ 2,它是否正確顯示出現在中間的文字?此外,你應該說你想要更具體地完成。 – Barney 2013-02-28 10:03:39

回答

2

這是我最終使用:

@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. 您可以取消註釋最後一行在畫布周圍繪製rect以進行調試。
2

也許你可以使用下面的代碼片段,看看它的工作與否:

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

的寬度和高度都只是在我的情況下,擅自進行計算。

+0

它被砍了,請看我的評論.. – 2013-03-02 08:23:40