使用canvas画字符时,常常遇到字符很长,不会换行的问题.
解决办法:
使用StaticLayout这个类.
mCurrentPaint=newTextPaint();
mCurrentPaint.setColor(Color.GREEN);
mCurrentPaint.setTextAlign(Align.CENTER);
mCurrentPaint.setTextSize(30);
StaticLayout currentLayout =newStaticLayout(currentLine,mCurrentPaint,mViewWidth/ 2,
Alignment.ALIGN_NORMAL, 1.5f, 0f,false);
canvas.translate(mViewWidth/ 2,mViewHeight/ 2);
currentLayout.draw(canvas);
androidStaticLayout参数解释
StaticLayout(CharSequence source, int bufstart, int bufend,
TextPaint paint, int outerwidth,
Alignment align,
float spacingmult, float spacingadd,
boolean includepad,
TextUtils.TruncateAt ellipsize, intellipsizedWidth)
1.需要分行的字符串
2.需要分行的字符串从第几的位置开始
3.需要分行的字符串到哪里结束
4.画笔对象
5.layout的宽度,字符串长度超出给定宽度时自动换行。
6.layout的对其方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种。
7.相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。
8.在基础行距上添加多少
实际行间距等于这两者的和。
9.参数未知
10.从什么位置开始省略
11.超过多少开始省略
注意:
1.需要指出的是这个layout是默认画在Canvas的(0,0)点的,如果需要调整位置只能在draw之前移Canvas的起始坐标
canvas.translate(x,y);
2.当字符串中用空格时字符串也会自动换行;(可以根据业务需求把空格换成其他的字符代替比如“/”,":" 等)