美文网首页
自定义View绘制文本居中

自定义View绘制文本居中

作者: 满天星爱我 | 来源:发表于2018-02-25 19:09 被阅读12次

    先看一张图:


    1.png

    Baseline是基线,在android中,文字的绘制都是从Baseline处开始的,Baseline往上至字符“最高处”的距离我们称之为ascent(上坡度),Baseline往下至字符“最低处”的距离我们称之为descent(下坡度);

    leading(行间距)则表示上一行字符的descent到该行字符的ascent之间的距离;

    2.png

    top和bottom文档描述地很模糊,其实这里我们可以借鉴一下TextView对文本的绘制,TextView在绘制文本的时候总会在文本的最外层留出一些内边距,为什么要这样做?因为TextView在绘制文本的时候考虑到了类似读音符号,下图中的A上面的符号就是一个拉丁文的类似读音符号的东西:

    Baseline是基线,Baseline以上是负值,以下是正值,因此 ascent,top是负值, descent和bottom是正值。

    Paint.FontMetrics metrics = mPaint.getFontMetrics();

    其实真是的文本高度为: metrics.descent - metrics.asscent;

    但是绘制的时候一般都是以:metrics.bottom - metrics.top 来作为文本的高度

    那么基线的y轴坐标就是: getHeight() / 2 + (metrics.bottom - metrics.top) / 2 - metrics.bottom;

    相关文章

      网友评论

          本文标题:自定义View绘制文本居中

          本文链接:https://www.haomeiwen.com/subject/gnorxftx.html