在包含Canvas的布局中心设置Text

时间:2012-12-26 10:31:30

标签: android android-canvas

我的情况如下

enter image description here

在我的线性布局中,我添加了一个包含画布的View(MyView)

drawLayout.addView(new MyView(this,"a"));

现在我想在画布中的在linearlayout 的中间画一个文本,为此我计算了linearlayout的高度和宽度(drawWidth,drawHeight),然后写了这个,

canvas.drawText(letterTOdraw,drawWidth/2,drawHeight/2,mpaint);

但它没有正确绘制(不在中心)。之后我修改如下

canvas.drawText(letterTOdraw,canvas.getWidth()/2,canvas.getHeight()/2,mpaint);

但没有改变。当我计算画布的高度和宽度时,我很惊讶我给了我600 X 1024,我怎么可能将MyView设置为仅为951X359的linearLayout。

因此我无法在linearLayout的中心绘制文本。

我在这个问题上坚持了5个小时。帮助我摆脱这种局面。

1 个答案:

答案 0 :(得分:0)

您的居中代码错误。您的代码将绘制不在中心的文本,而是略微向下和向右绘制 - 画布的中心将是文本的左上角。

如果您想在中心绘制文字,则需要考虑文字的大小 - ((canvas.getWidth() - letterWidth) /2, (canvas.getHeight() - letterHeight) / 2))