1

如何在表面视图中水平居中字符串?

我不想

c.drawText(""+score, c.getWidth()/2, y);

因为这将显示从屏幕中心开始的文本。

我想要类似的东西

c.drawText(""+score, c.getWidth()/2-score.length()/2*fontSize, y);

有没有一个方程可以解决这个问题?如果没有,还有其他方法可以在表面视图中居中文本吗?

顺便说一句,我使用的是自定义字体,我不知道这是否会改变任何东西。如果您需要了解有关字体的任何额外信息,请发表评论。

4

1 回答 1

3

您不必手动计算。您只需要在Paint对象中指定一些额外的参数:

Paint paint = new Paint(); 
paint.setColor(textColor); 
paint.setTextSize(28); 
paint.setTypeface(typeface); 
paint.setTextAlign(Align.CENTER);

关键是您需要指定Align.CENTER,这样您就可以调用:

canvas.drawText("CENTERED TEXT", canvas.getWidth()/2, posY, paint);
于 2013-10-17T08:01:18.357 回答