我想在中间完美对齐画布绘制的字符串。所以如果我有这样的代码
Paint p = new Paint();
Canvas c = holder.lockCanvas();
String centered_text = "Hello World";
然后设置我的绘画风格和大小
p.setTextSize(35);
p.setStyle(Style.STROKE);
现在要在中间绘制我的字符串,我会这样做
c.drawText(centered_text, c.getWidth()/2, c.getHeight()/2, p);
但这实际上不会使我的文本居中,它会将左上角置于中心。为了使其居中,我需要知道以像素而不是字符为单位的字符串字面宽度和高度。
int string_width = centered_text.getWidth(); //String.getWidth() is not a real methode
int string_height = centered_text.getHeight(); //String.getHeight() is not a real methode
c.drawText(centered_text, (c.getWidth()/2)-(string_width/2), (c.getHeight()/2)-(string_height/2), p);
这将使文本居中,但String.getWidth()
不是String.getHeight()
真正的方法。所以我的想法是使用文本的大小和字符串的大小来找到宽度和高度。所以有些事情是这样的:
int string_width = centered_text.length()*p.getTextSize();
int string_height = p.getTextSize();
但我觉得这是错误的,因为不同的字符大小不同......任何人都有任何想法。