文字最终的大小是和绘制文字的字体的类型和字体的大小是相关的.
设置字体类型 Paint.setTypeface(Typeface typeface)
设置字体大小 Paint.setTextSize(float textSize)
几个相关的尺寸和方法
Paint.FontMetrics
有5个属性,并且这5个属性都是跟字体相关的.
top: 字体中字符超出基线之上的最大距离
bottom: 字体中字符超出基线之下的最大距离
ascent: 单个字符超出基线之上的推荐距离
descent: 单个字符超出基线之上的推荐距离
leading: 标准行间距
Paint.getTextBounds
这个方法获取字符[字符串]占据的矩形区域,意为字体可见部分的矩形区域
1 | Rect bound = new Rect(); |
Paint.measureText(text)
返回的是字符[字符串]的宽度,注意与
1 | bound.right - bound.left |
相互区分.
因为通常来说每个字符两边都会留有一部分空白区域,便于阅读.所以measureText的尺寸通常会大于bound.right - bound.left.所以,对于单个字符来说:
1 | measureText = bound.right - bound.left + 字符两边的留白宽度 |
整体图示如下
应用场景
垂直居中的文字,计算基线位置使用FontMetrics比较方便.
或者大小不一的问题要实现对齐,使用getTextBounds比较方便.
获取文字的理想宽度,使用measureText比较方便
图示代码
1 | Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); |