当前位置:网站首页>Detailed explanation of the use of staticlayout

Detailed explanation of the use of staticlayout

2022-07-05 10:11:00 A bird carved in the desert

stay Android In development ,Canvas.drawText Don't wrap , Even a very long string will only display one line , The excess will be hidden from the screen .
StaticLayout yes android A tool class for processing text in ,StaticLayout Solved the problem of word wrapping , As an example :

package com.zhy.someuitest;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.View;

import androidx.annotation.Nullable;

public class StaticLayoutView extends View {

    StaticLayout staticLayout;

    public StaticLayoutView(Context context) {
        this(context, null);
    }

    public StaticLayoutView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public StaticLayoutView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
        textPaint.setColor(Color.BLACK);
        textPaint.setStyle(Paint.Style.FILL);
        textPaint.setTextSize(50);
        String text = " stay Android In development ,Canvas.drawText Don't wrap , Even a very long string will only display one line , The excess will be hidden from the screen .StaticLayout yes android A tool class for processing text in ,StaticLayout  Solved the problem of word wrapping ";
        staticLayout = new StaticLayout(text, textPaint, canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
        staticLayout.draw(canvas);
    }
}

 Staticlayout There are three construction parameters in :

With public StaticLayout(CharSequence source, int bufstart, int bufend,
TextPaint paint, int outerwidth,
Alignment align,
float spacingmult, float spacingadd,
boolean includepad,
TextUtils.TruncateAt ellipsize, int ellipsizedWidth) {
this(source, bufstart, bufend, paint, outerwidth, align,
TextDirectionHeuristics.FIRSTSTRONG_LTR,
spacingmult, spacingadd, includepad, ellipsize, ellipsizedWidth, Integer.MAX_VALUE);
} Explain the function of parameters

CharSequence source Need a string of branches
int bufstart The string that needs to be branched starts at the position of
int bufend Where does the string for the branch end
TextPaint paint Brush object
int outerwidth layout Width , Wrap when exceeded
Alignment align layout The right way to do it , Yes ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE Three
float spacingmult Relative row spacing , Relative font size ,1.5f Indicates that the line spacing is 1.5 Times the font height .
float spacingadd How much to add to the base line spacing
boolean includepad,
TextUtils.TruncateAt ellipsize Where to start omitting
int ellipsizedWidth More than how many begin to omit
Add :TextView In fact, it is also used StaticLayout

原网站

版权声明
本文为[A bird carved in the desert]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207050941163425.html