6

我现在有一个文本,Hello我需要为这个说 12 或 18 应用字体大小,一旦我们将字体应用于文本,文本大小就会增加。

所以现在我需要使用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".

4

3 回答 3

13

试试这个方法:

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
于 2013-01-11T11:36:50.247 回答
2

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

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

在这里查看我更完整的答案。我在那个答案中进行getTextBounds比较。FontMetrics

于 2017-02-07T14:09:01.193 回答
-1

油漆.setTextSize(18); 这一行告诉了文本的高度

于 2020-04-21T20:48:56.513 回答