android 文本显示之StaticLayout

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010870167/article/details/80942827

StaticLayout

这个在自定义view中绘制可以自动换行的文本内容时,使用该布局类.

在自定义view中,Canvas.drawText() 只能绘制单行的文字,而不能换行;同时使用换行符\n也不能执行换行,而是把 \n当成了一个空格来绘制,所以我们在自定义view中绘制文本时使用drawText()有时想要达到我们想要的效果会非常耗时.这时,我们可以使用StaticLayout.
StaticLayout 并不是一个 View 或者 ViewGroup ,而是 android.text.Layout 的子类,它是纯粹用来绘制文字的。 StaticLayout 支持换行,它既可以为文字设置宽度上限来让文字自动换行,也会在 \n 处主动换行。

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mStaticLayout = new StaticLayout(TEXT, mTextPaint, canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 
                1.0F, 0.0F, false);
        mStaticLayout.draw(canvas);
    }

StaticLayout 的构造方法是 StaticLayout(CharSequence source, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad),其中参数里:

width 是文字区域的宽度,文字到达这个宽度后就会自动换行;
align 是文字的对齐方向;
spacingmult 是行间距的倍数,通常情况下填 1 就好;
spacingadd 是行间距的额外增加值,通常情况下填 0 就好;
includeadd 是指是否在文字上下添加额外的空间,来避免某些过高的字符的绘制出现越界。

猜你喜欢

转载自blog.csdn.net/u010870167/article/details/80942827