我有一个名为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".
答案 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。我在该答案中将getTextBounds
与FontMetrics
进行了比较。
答案 2 :(得分:-1)
paint.setTextSize(18);这行告诉你文字的高度