使用Canvas Android在填充矩形内绘制文本

如何绘制带有指定边界的填充矩形,并使用Canvas Android绘制该矩形文本?我试过了

mPaint.setColor(Color.GREEN);
canvas.drawText(mText,x,y,mPaint);
mPaint.setColor(Color.BLACK);
canvas.drawRect(x,x + w,y + h,mPaint);

文字不在那个矩形内.任何好友都可以告诉我如何在考虑文本大小的情况下绘制一个围绕指定文本的矩形吗?

解决方法

这里我有硬编码的x和y值.你可以改变它们

mpaint= new Paint();
        mpaint.setColor(Color.RED);
        mpaint.setStyle(Style.FILL);
        paint2= new Paint();
        paint2.setColor(Color.GREEN);
        paint2.setTextSize(50);  //set text size
        float w = paint2.measureText(s)/2;
        float textSize = paint2.getTextSize();


        @Override
        protected void onDraw(Canvas canvas) {
            paint2.setTextAlign(Paint.Align.CENTER);
            canvas.drawRect(300-w,300 - textsize,300 + w,300,mpaint);
            canvas.drawText(s,paint2); //x=300,y=300    
        }

编辑:

在onDraw中调用measureText是个坏主意.你可以在onDraw之外做到这一点.

还有一个关于性能的视频以及为什么要避免在onDraw中进行分配. https://www.youtube.com/watch?v=HAK5acHQ53E

结果快照

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...