2013-01-11 8 views
5

私はHelloというテキストを持っています。今度は、フォントサイズを増やすとフォントに適用するとすぐに、12,18のようにfontsizeを適用する必要があります。フォントサイズを含むテキストの高さを取得し、その高さを設定します

私はペンキを使ってフォントサイズを含むテキストの高さを取得する必要があります。

私は塗料で次のことを試してみました:

String finalVal ="Hello"; 

Paint paint = new Paint(); 
paint.setTextSize(18); 
paint.setTypeface(Typeface.SANS_SERIF); 
paint.setColor(Color.BLACK); 
paint.setStyle(Paint.Style.FILL); 

Rect result = new Rect(); 
// Measure the text rectangle to get the height 
paint.getTextBounds(finalVal, 0, finalVal.length(), result); 

しかし、そのは動作していない、私は動的に基づいてのWebViewの高さを設定しようとしています

EDIT

を助けてくださいtextheight "Hello"のように1行のテキストの高さを取得していますが、テキストに2行ある場合"My name is abc and my dads name is xyz and my moms name is 123" now its not getting the proper text height".

+0

正確には機能しないものはありますか? –

+0

私の編集 – Goofy

+0

hm ...は奇妙に聞こえます。なぜあなたはそれをする必要がありますか? –

答えて

7

は、この方法を試してみてください:ここで

String finalVal ="Hello"; 

Paint paint = new Paint(); 
paint.setTextSize(18); 
paint.setTypeface(Typeface.SANS_SERIF); 
paint.setColor(Color.BLACK); 
paint.setStyle(Paint.Style.FILL); 

Rect result = new Rect(); 
paint.getTextBounds(finalVal, 0, finalVal.length(), result); 

Log.d("WIDTH  :", String.valueOf(result.width())); 
Log.d("HEIGHT  :", String.valueOf(result.height())); 

が出力されます。

WIDTH  : 40 
HEIGHT  : 14 

私はこれを設定した場合、

String finalVal ="My name is abc and my dads name is xyz and my moms name is 123"; 

私の出力は次のとおりです。

WIDTH  : 559 
HEIGHT  : 18 
+0

これまで私が行ってきた答えに感謝しています。私も同じ答えを得ていますが、デバイスの高さと幅に基づいて設定しています。こんにちは言葉とマルチラインの高さが大きい – Goofy

2

することができますからのテキストの高さを得るFontMetrics。現在のテキスト文字列が何であっても、特定のフォントとフォントサイズで一定です。

Paint.FontMetrics fm = mTextPaint.getFontMetrics(); 
float textHeight = fm.descent - fm.ascent; 
float lineHeight = fm.bottom - fm.top + fm.leading; 

私の完全な答えhereを参照してください。私はその回答でgetTextBoundsFontMetricsを比較します。

関連する問題