`
jackeysion
  • 浏览: 127450 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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


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

目前使用的是这种方法:
   public int getFontWidth(float fontSize) {
        Paint paint = new Paint();
        paint.setTextSize(fontSize);
        Paint.FontMetrics fm = paint.getFontMetrics();

        return (int) Math.ceil(fm.descent - fm.ascent);
    }

    public int getFontHeight(float fontSize) {
        Paint paint = new Paint();
        paint.setTextSize(fontSize);
        Paint.FontMetrics fm = paint.getFontMetrics();

        return (int) Math.ceil(fm.bottom - fm.top);
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics