文字的对齐
-
将文字的对齐,必须知道 paint 的属性,如下图所示:(查看示例地址,自己运行下就能搞清楚这些线条了)

-
上图中,除了
baseline,其他的都是 paint 的成员变量,而baseline是由使用者自己定义的,其中 TextView 就有 定义 baseline 成员变量 -
其中
top,bottom,ascent,descent都是paint属性,它们的坐标永远都是相对 baseline 而言的(对于 paint 而言,baseline 永远都是0),所以我们在绘制文字(canvas.drawText)的时候,Y坐标是对准 baseline 的。想要正确显示文字,在Y坐标上肯定需要一定的偏移量。 -
paint.getTextBounds()获取到的是文字的绝对外框,文字的变动(比如a->b,c->A)都会导致 TextBounds 发生变化,因为a和b的高度不一样,所以a和b的 TextBounds 高度也是不一样的,宽度也一样。 -
文字对齐点为:水平可以
Gravity指定,默认Left; 垂直方向为Baseline。如下图红色点为默认对齐点:
注意:文字在垂直方向并不是底部对齐的,而是对准文字的
Baseline的
绘制多行自动换行文字
-
使用
StaticLayout就能解决问题啦,很智能的 -
使用
paint.breakText(text...)可以解锁更多自定义姿势,比如图文混排等效果。 -
DEMO 效果图:
ImageTextView HollowTextView 
