android StaticLayout 完美契合TextView
1.StaticLayout从名字可以看出,它是一个静态布局。可以作为定位行字符也可以作为换行工具使用1.1 换行工具:我在们自定义一个TextView,会发现文字太长,并不会自动换行,而是只显示了一部分,这样就很尴尬。但是如果配合staticLayout江会完美决绝:TextPaint textPaint=new TextPaint(Paint.ANTI_ALIAS_FLAG);textPain
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多。
更多推荐
所有评论(0)