Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the text height including the font size and set that height

i have a text called Hello now i need to apply fontsize for this say 12 or 18 now as soon as we apply font to the text the text size increases.

so now i need to get the text height including the font size using paint.

i have tried with paint the following:

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);

But its not working , please help

EDIT

i am trying to set the height of webview dynamically based on the textheight i am getting the text height for single line like "Hello" but if there are two lines in the text "My name is abc and my dads name is xyz and my moms name is 123" now its not getting the proper text height".

like image 985
Goofy Avatar asked Jan 11 '13 11:01

Goofy


2 Answers

Try this way:

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()));

Here is the output:

WIDTH        : 40
HEIGHT       : 14

If I set this,

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

My Output is :

WIDTH        : 559
HEIGHT       : 18
like image 96
Pratik Sharma Avatar answered Oct 12 '22 00:10

Pratik Sharma


You can get the text height from the FontMetrics. It is constant for a particular font and font size, no matter what the current text string is.

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

See my fuller answer here. I compare getTextBounds with FontMetrics in that answer.

like image 20
Suragch Avatar answered Oct 12 '22 00:10

Suragch