drawText(String text, float x, float y, Paint paint)
x,y是基于文字基本线的,而不是android坐标系的左上角。
使用staticLayout进行文字换行,它既可以为文字设置宽度上限来让文字自动换行,也会在
处主动换行
例子:
String text1 = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."; StaticLayout staticLayout1 = new StaticLayout(text1, paint, 600, Layout.Alignment.ALIGN_NORMAL, 1, 0, true); String text2 = "a bc defghi jklm nopqrst uvwx yz"; StaticLayout staticLayout2 = new StaticLayout(text2, paint, 600, Layout.Alignment.ALIGN_NORMAL, 1, 0, true); ... canvas.save(); canvas.translate(50, 100); staticLayout1.draw(canvas); canvas.translate(0, 200); staticLayout2.draw(canvas); canvas.restore();
效果:
StaticLayout
的构造方法是 StaticLayout(CharSequence source, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad),其中参数里:
width
是文字区域的宽度,文字到达这个宽度后就会自动换行; align
是文字的对齐方向; spacingmult
是行间距的倍数,通常情况下填 1 就好; spacingadd
是行间距的额外增加值,通常情况下填 0 就好; includeadd
是指是否在文字上下添加额外的空间,来避免某些过高的字符的绘制出现越界。
如果你需要进行多行文字的绘制,并且对文字的排列和样式没有太复杂的花式要求,那么使用 StaticLayout
就好。
Paint对文字绘制的辅助