Android获取字体高度跟设置行高(转)

Android获取字体高度和设置行高(转)
网络中好多资料介绍获取字体高度的方法如下:
public int getFontHeight(float fontSize)   
{   
    Paint paint = new Paint();   
    paint.setTextSize(fontSize);   
    FontMetrics fm = paint.getFontMetrics();   
    return (int) Math.ceil(fm.descent - fm.top) + 2;   
}   


个人更倾向于以下方式获取字体实际高度:

Math.ceil(fm.descent - fm.ascent) 


通过实际的截图对文字高度的确定,后者更准确一些。

有了字体高度信息,就可以添加行与行之间的空隙,调整行高。
个人实现方式如下:

paint.setTextSize(fFontWidth);   
FontMetrics fm = paint.getFontMetrics();   
   
fFontHeight = (float)Math.ceil(fm.descent - fm.ascent);   
if(fFontHeight > fLineHeight)   
{   
    fMulValue = fLineHeight / fFontHeight;   
    fAddValue = -1;   
}   
else   
{   
    fMulValue = 1;   
    fAddValue = fLineHeight - fFontHeight;   
}   
textViewLeft.setTextSize(fFontWidth);   
textViewLeft.setLineSpacing(fAddValue, fMulValue); 


实践验证这种方式对多种分辨率的屏幕的适应性较强。