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


实践验证这种方式对多种分辨率的屏幕的适应性较强。
以上是个人在实际的功能实现过程中的总结,水平较浅,若看官有不同的看法或者见解,望不惜赐教!
2010_10_10_17_02

你可能感兴趣的:(android)