2015-05-08 55 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