如何确保文本适合区域内

时间:2012-07-05 08:50:28

标签: android surfaceview paint font-size

我有SurfaceView我正在绘制矩阵(游戏板),矩阵的每个单元格的高度和宽度都是40像素。

在这些单元格中,我必须沿着以下行存储类似拼字游戏的图块:

+---------+
|    #    |
|   # #   |
|  #   #  |
|  #####  |
|  #   #  |
|       17|
+---------+

这封信总是一个字母,而且这个数字总是一个数字,最多两位数。

为了做到这一点,我实际上已经计算了表面上单元格的左上角像素的位置,我想要做的是将字母和数字绘制成特定的规格。

我需要确保该数字适合给定区域(例如右下方的10x10单元格),并且该字母位于图块中心而不会侵占数字区域。

我目前打算使用Paint.getTextBounds()来确定最大字母和数字的大小,如果结果显示尺寸太大,我只是用较小的字体来做。

我当然愿意接受更好的方法。即使 没有更好的方法,我仍然有问题。

我设置绘图对象的方式是:

numPaint = new Paint();
numPaint.setStrokeWidth(1);
numPaint.setColor(Color.BLACK);

并且文本的实际绘图很简单:

canvas.drawText(Integer.toString(num), pixcol + 30, pixrow + 30, numPaint);

确实将数字放在单元格的右下角,但是我没有指定字体大小或其他任何可能阻止文本进入单元格的内容例如,如果它的大小最终为15x15。

它似乎完全符合运气。在任何情况下,我都以完全相同的方式设置alphaPaint对象,但我希望它更大一些。

抱歉蜿蜒,我只想确保所有细节都在那里。底线问题是:我们如何设置绘图对象的字体大小?该对象具有getFontMetrics()但似乎没有set...等效项。 setTypeface()看起来很有希望,但字体和粗体/斜体/等,没有提到强制特定大小。

1 个答案:

答案 0 :(得分:2)

使用numPaint.setTextSize()设置字体大小。以下是文档public void setTextSize (float textSize)

的链接