android StaticLayout 完美契合TextView

2023-04-12


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多。


本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com