获取包含字体大小的文本高度并设置该高度

时间:2013-01-11 11:18:14

标签: android android-webview paint

我有一个名为Hello的文本,现在我需要在文字大小增加的文本中应用字体时立即对12或18应用fontsize。

所以现在我需要使用paint获取文本高度,包括字体大小。

我尝试过涂漆以下内容:

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

但它不起作用,请帮忙

修改

我正在尝试根据textheight动态设置webview的高度我获得单行的文本高度,如"Hello",但如果文本中有两行"My name is abc and my dads name is xyz and my moms name is 123" now its not getting the proper text height".

3 个答案:

答案 0 :(得分:9)

尝试这种方式:

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

答案 1 :(得分:2)

您可以从FontMetrics获取文字高度。无论当前文本字符串是什么,它都是特定字体和字体大小的常量。

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

请参阅我更全面的答案here。我在该答案中将getTextBoundsFontMetrics进行了比较。

答案 2 :(得分:-1)

paint.setTextSize(18);这行告诉你文字的高度