如何在android中的指定矩形中绘制文本?

如何在android中的指定矩形中绘制文本?,第1张

概述有没有一种方法可以在指定的矩形绘制文本?我正在使用直接绘制到画布(ImageView)canvas.drawText(text,x,y,paint)但这将整个文本放在一行中.我想用指定的(x,y),(x1,y1)限制包装文本.我不想使用textviews或任何其他视图.我只想在图像上绘制文本.有什么方法可以做到这一点?

有没有一种方法可以在指定的矩形中绘制文本?
我正在使用直接绘制到画布(ImageVIEw)

canvas.drawText(text,x,y,paint) 

但这将整个文本放在一行中.我想用指定的(x,y),(x1,y1)限制包装文本.我不想使用textvIEws或任何其他视图.

我只想在图像上绘制文本.

有什么方法可以做到这一点?

提前致谢

解决方法:

首先,您必须确定文本大小.每个字符的宽度可以通过getTextWIDths()获得,高度与文本大小相同.尝试估计初始文本大小,然后使用文本的高度和宽度调整最终值.

其次,您需要换行. Paint.getTextWIDths()或Paint.breakText()都可以实现此目标.

编辑:添加代码示例.

public static class RectTextVIEw extends VIEw {    private int mWIDth = 200;    private int mHeight = 100;    private String mText = "Hello world. Don't you kNow why, why you and I.";    private Paint mPaint;    private List<Integer> mTextBreakPoints;    public RectTextVIEw(Context context) {        this(context, null);    }    public RectTextVIEw(Context context, AttributeSet attrs) {        super(context, attrs);        mPaint = new Paint();        mPaint.setcolor(color.WHITE);        mPaint.setAntiAlias(true);        setSuitableTextSize();    }    @OverrIDe    protected voID onMeasure(int wIDthMeasureSpec, int heightmeasureSpec) {        setMeasuredDimension(mWIDth, mHeight);    }    @OverrIDe    protected voID onDraw(Canvas canvas) {        int start = 0;        int x = 0;        int y = 0;        for (int point : mTextBreakPoints) {            y += mPaint.getTextSize();            canvas.drawText(mText, start, point, x, y, mPaint);            start = point;        }    }    private voID setSuitableTextSize() {        int textSize = getEstimateTextSize();        for (; textSize > 0; textSize--) {            if (isTextSizeSuitable(textSize))                return;        }    }    private boolean isTextSizeSuitable(int size) {        mTextBreakPoints = new ArrayList<Integer>();        mPaint.setTextSize(size);        int start = 0;        int end = mText.length();        while (start < end) {            int len = mPaint.breakText(mText, start, end, true, mWIDth,                    null);            start += len;            mTextBreakPoints.add(start);        }        return mTextBreakPoints.size() * size < mHeight;    }    private int getEstimateTextSize() {        return (int) Math.sqrt(mWIDth * mHeight / mText.length() * 2);    }}
总结

以上是内存溢出为你收集整理的如何在android中的指定矩形中绘制文本?全部内容,希望文章能够帮你解决如何在android中的指定矩形中绘制文本?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1086167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存