Android:在画布上测量文本高度
我目前正在绘制位图,然后将其发送到移动打印机。但是,我正在努力测量文本的高度,以便可以适当地推进y位置 我的基本位图/画布/绘画配置如下(字体大小为16,位图尺寸为200x400(宽x高): 到目前为止还不错,现在我想做的是:如果我使用绘画的方法drawText,我需要提供x和y坐标。对于x,它是零(假设文本左对齐),但是对于y,我必须计算我打印的每个文本的高度并加起来,这样我就可以跟踪我当前的y位置 这就是它变得奇怪的地方:我使用以下方法来确定文本的高度(使用我之前初始化的Paint对象-它被称为“笔刷”): 上述方法为以下文本返回以下值:Android:在画布上测量文本高度,android,paint,android-canvas,Android,Paint,Android Canvas,我目前正在绘制位图,然后将其发送到移动打印机。但是,我正在努力测量文本的高度,以便可以适当地推进y位置 我的基本位图/画布/绘画配置如下(字体大小为16,位图尺寸为200x400(宽x高): 到目前为止还不错,现在我想做的是:如果我使用绘画的方法drawText,我需要提供x和y坐标。对于x,它是零(假设文本左对齐),但是对于y,我必须计算我打印的每个文本的高度并加起来,这样我就可以跟踪我当前的y位置 这就是它变得奇怪的地方:我使用以下方法来确定文本的高度(使用我之前初始化的Paint对象-它被
由于行距离不应取决于文本中碰巧包含的特定字母,因此您可能正在寻找哪些字母可以通过以下方式获得:计算
下降-上升+前导
,以获得建议的基线距离(因为上升具有负值).接受的答案中有一个小错误。如果需要文本高度,应使用
Paint.FontMetrics fm = mTextPaint.getFontMetrics();
float textHeight = fm.descent - fm.ascent;
float lineHeight = fm.bottom - fm.top + fm.leading;
如果你想知道线的高度,你应该使用
Paint.FontMetrics fm = mTextPaint.getFontMetrics();
float textHeight = fm.descent - fm.ascent;
float lineHeight = fm.bottom - fm.top + fm.leading;
行距是可选的行距,因此,如果需要获得行距,可以将其包括在内。但如果只需要文本高度,则可以不使用行距
注意
- 实际上,我从未见过
是前导
以外的任何东西,据我所知,它甚至似乎在中被忽略了(及其相关的,等等)。如果我错了,请纠正我。因此,它可能是安全的,它不符合行高计算,但我不能完全确定这一点0