自定义 View -文字
本文记录自定义View-绘制文字相关 API 的使用。
文字绘制方法
直接通过 Canvas 内置 drawText()
绘制文字。
文字测量
文字测量有两种方法。
调用
Paint.getTextBounds(String text, int start, int end, Rect bounds)
方法,测量结果存放在bounds
对象中,对应文字的上下左右边界。调用
Paint.getFontMetrics()
,返回FontMetrics
对象。
image-20210815223036212.png
FontMetrics
中有五条文字的基准线,依次为:
image-20210815223517086.png
-
top-line
: 可绘制区域最顶部的线 -
ascent-line
: 可绘制区域顶部的线,系统推荐的顶部位置, -
baseline
: 文字绘制的基线(在四线格上书写英文字母时的第三条线) -
descent-line
: 可绘制区域底部的线,系统推荐的底部位置 -
bottom-line
: 可绘制区域最底部的线
对应 FontMetrics
中五个属性值
top = Y(top-line) - Y(baseline)
ascent = Y(ascent-line) - Y(baseline)
descent = Y(descent-line) - Y(baseline)
bottom = Y(bottom-line) - Y(baseline)
leading
是系统推荐的行间隔。Paint.getTextBounds
通常用于静态文字的测量,而Paint.getFontMetrics()
通常用于动态文字测量。
文字换行
文字换行用 Paint.breakText()
实现。breakText()
有几种重载方法,基本用法大同小异。
文字对齐
简单的文字对齐可使用 Paint.setTextAlign()
接口设置。
复杂的文字对齐需要计算文字的边界值和绘制的起始点,通常是结合 Paint.getTextBounds()
或 Paint.getFontMetrics()
测量属性值做偏移计算,以具体项目为准。