android自定义View画文字的换行问题的解决

在使用canvas.drawText()绘制文字的时候,发现,如果需要绘制的文字较长,需要换行,通过在文字中加上“\n"或者”\r\n"都无法实现换行,如果非要使用canvas.drawText()方法来绘制,则必须自己手动的将文字给断开,这样很不方便,如果需要改变文字大小的时候,则还需要重新改写断开的方法,或者直接写个可以根据文字大小进行自动断开字符串的方法,但是,都是很繁琐的办法,其实,android中是有提供实现绘制字符串换行的方式的,如下:

TextPaint textPaint = new TextPaint();

 

textPaint.setARGB(0xFF, 0xFF, 0, 0);

textPaint.setTextSize(20.0F);

String test= "吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦,换行测试用 ";

 

/**

* source 需要分行的字符串
* paint 画笔对象
* width layout的宽度,字符串超出宽度时自动换行。

* align layout的对其方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种。

* spacingmult : 相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。

* spacingadd : 在基础行距上添加多少,实际间距为spacingmult spacingadd 的和

* includepad : 不明,希望知道的朋友可以告知一下

*/

StaticLayout(CharSequence source, TextPaint paint, int width, Alignment align, float spacingmult, float spacingadd, boolean includepad)

StaticLayout layout = new StaticLayout(test, textPaint, 240, Alignment.ALIGN_NORMAL, 1.0F, 0.0F, true);

  

//需要指出的是这个layout是默认画在Canvas的(0,0)点的,如果需要调整位置只能在draw之前移Canvas的起始坐标

can.translate(20,80);

 

layout.draw(can);

你可能感兴趣的:(Android)