Get the text height including the font size and se

2019-02-14 08:36发布

问题:

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".

回答1:

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


回答2:

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.