1.StaticLayout

 从名字可以看出,它是一个静态布局。可以作为定位行字符也可以作为换行工具使用

1.1 换行工具:

   我在们自定义一个TextView,会发现文字太长,并不会自动换行,而是只显示了一部分,这样就很尴尬。但是如果配合staticLayout江会完美决绝:

TextPaint textPaint=new TextPaint(Paint.ANTI_ALIAS_FLAG);

textPaint.setColor(Color.RED);

textPaint.setStyle(Paint.Style.FILL);

textPaint.setTextSize(50);

String text="在Android开发中,Canvas.drawText不会换行,StaticLayout 处理了文字换行的问题";

staticLayout=new StaticLayout(text, textPaint, canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f,0.0f , false);

staticLayout.draw(canvas);

1.2.定位一行多少个字符和多少行。配合SpannableString。

 我们使用SpannableString进行组合的时候,会发现,SpannableString很多数据和TextView会有冲突,如果我们想设置超过多长后面开始设置省略号需要计算:当前文字是多少行,每一行显示多少个字符。这样我们就可以通过staticLayout来获取。

 

如何使用:

StaticLayout layout=new StaticLayout(String content,Paint paint,float width,int Alignment,float spacingmult,float spacingadd,boolean includepad);

content:需要显示的内容

paint:text.getPaint();当前TextView的paint()

width:当前textView的宽。

spacingmult 相对行间距 默认1.0f

spacingadd:间距默认为0.

includepad:是指是否在文字上下添加额外的空间,来避免某些过高的字符的绘制出现越界,一般false多。

 

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐