首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在自定义视图中绘制文本?

如何在自定义视图中绘制文本?
EN

Stack Overflow用户
提问于 2013-05-31 16:13:10
回答 2查看 8.3K关注 0票数 6

我已经创建了自定义视图来在内部绘制一个自定义的语音气泡,并且我希望在自定义视图上放置一些文本。我使用drawTextOnPath,但它不能正常工作,我希望文本逐行显示。

自定义视图-语音气泡

代码语言:javascript
复制
Paint paint = new Paint();

paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
paint.setStrokeWidth(2);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);      
paint.setPathEffect(new CornerPathEffect(15) );  
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setDither(true);
paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE,
                                                           Shader.TileMode.MIRROR));
Path path = new Path();         
paint.setShadowLayer(4, 2, 2, 0x80000000);
path.moveTo(myPath[0].x, myPath[0].y);
for (int i = 1; i < myPath.length; i++){
    path.lineTo(myPath[i].x, myPath[i].y);                  
}
path.close();
canvas.clipPath(path);
canvas.drawPath(path, paint);
canvas.save();
paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawTextOnPath(MessageBody, path, 10, 10, paint);

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-03 04:49:50

我在语音气泡中创建了一个矩形,如下所示

代码语言:javascript
复制
Rect rcText;
rcText = new Rect(rcBounds);//rcBounds is y speech bubble rect
canvas.save();

限制抽奖面积

canvas.cliprect(rect);

然后在语音气泡中画出这样的文字

代码语言:javascript
复制
canvas.drawtext(mytext,rect.left,rect.top,paint);
canvas.restore();

谢谢mc_fish。

票数 1
EN

Stack Overflow用户

发布于 2013-05-31 16:16:48

像这样吗?

代码语言:javascript
复制
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);
...
//tell the paint of the new color
paint.setColor(android.R.color.black);
paint.setTextSize(20);
canvas.drawText("Some Text", 10, 25, paint);

编辑:

那为什么不像这样

代码语言:javascript
复制
Path path = new Path();
path.addCircle(width/2, height/2, radius, Path.Direction.CW);

Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(20);
canvas.drawTextOnPath("Some Text", path, 0, 0, paint);

编辑nr2:

为什么不加一个直角呢?

代码语言:javascript
复制
path.addRect(left, top, right, bottom, Direction.CW);

代码语言:javascript
复制
path.addRect(rect, Direction.CW);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16861619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档