2015-05-08 52 views
0

我有一个字符串数组,并使用android图形库(Canvas,Paint)在屏幕上绘制了这些字符串。首先,绘制一个透明的矩形,然后在这个矩形上绘制字符串,给出带有边框线和填充的文本的印象。根据字符串长度在画布上自动设置矩形长度

问题是一些字符串很长,有些很短,我怎样才能修改矩形,使其与字符串一样长和宽? (如在TextView中WRAP_CONTENT)

目前我使用这种方法

canvas.drawRect(_x-10, _y-10, _x+620, _y+30, rectanglePaint); 
canvas.drawText(placeName, _x, _y, textPaint); //text 

如果有更好的方法,那么请不要让我知道。

注意:它将用于AR应用程序,因此当移动设备移动时,文本将从左向右移动,反之亦然。 _x,_y代表地名在第二行完美呈现,我希望文字应该保持突出显示,无论移动设备如何移动。

回答

0

油漆有一个measure text方法,如果要用该油漆绘制文本,它会给出文本的宽度。其get font metrics可能会给你一些数据,你可以从中计算高度。文本的大小,定位,包装和渲染是一个非常复杂的问题,我建议在你的ViewGroup中使用一个子TextView(带背景),而不是在你做任何复杂事情时试图自己推出。

+0

有没有一种方法可以得到文本在屏幕上覆盖的长度?例如,为了简单起见,例如可以说,如果我在矩形中包含单词“hello”,我如何获得该矩形bcx的长度,一旦我得到它,就完成了。 – aqarain

+0

'textPaint.measureText(“hello”)'应该给你的长度(以像素为单位) – FunkTheMonk

+0

非常感谢,先生,这对我有用:) float len = textPaint.measureText(placeName); canvas.drawRect(_x-10,_y-10,_x + len + 15,_y + 30,rectanglePaint); canvas.drawText(placeName,_x,_y,textPaint); //文本 – aqarain