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

Android 如何在自定义视图中绘制文本?,android,android-layout,android-view,Android,Android Layout,Android View,我已经创建了自定义视图,以便在其中绘制自定义语音气泡 我想在自定义视图中添加一些文本。我使用的是drawTextOnPath,但它不能正常工作,我希望文本逐行显示 自定义视图-语音气泡 Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setAntiAlias(true); paint.setStrokeWidth(2); paint.setStrokeJoin(Paint.Join.ROUND); paint.setS

我已经创建了自定义视图,以便在其中绘制自定义语音气泡 我想在自定义视图中添加一些文本。我使用的是drawTextOnPath,但它不能正常工作,我希望文本逐行显示

自定义视图-语音气泡

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);
油漆=新油漆();
油漆。设置颜色(颜色。黑色);
paint.setAntiAlias(真);
油漆。设置行程宽度(2);
绘制.设置行程连接(绘制.连接.圆形);
油漆固定行程盖(油漆固定行程盖圆形);
paint.setPathEffect(新的CornerPathEffect(15));
绘制.设置样式(绘制.样式.填充和笔划);
绘制。设置抖动(真);
paint.setShader(新的LinearGradient(0,0,0,getHeight(),Color.BLACK,Color.WHITE,
Shader.TileMode.MIRROR);
路径路径=新路径();
绘制.设置阴影层(4,2,2,0x8000000);
moveTo(myPath[0].x,myPath[0].y);
for(int i=1;i
谢谢。

像这样的东西

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);
编辑:

那为什么不做这样的事情呢

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:

为什么不添加一个rect

path.addRect(left, top, right, bottom, Direction.CW);


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

Rect rcText;
rcText = new Rect(rcBounds);//rcBounds is y speech bubble rect
canvas.save();
限制绘图区域

canvas.cliprect(rect)

然后像这样画出演讲泡泡里的文字

canvas.drawtext(mytext,rect.left,rect.top,paint);
canvas.restore();

谢谢mc_fish。

否,如果文本大于视图大小,则所有文本都不会显示在视图中。这里的矩形是什么?drawTextOnPath(MessageBody、rect、10、10、paint);这是画圈,我的自定义视图,比如矩形。是的,这只是一个poc:)你的路径可能有错误。你试过调试吗?是的,画语音泡泡很好,但我不能在里面画文本。我在我的路径上画矩形,但不起作用!如果一个解决方案对你有效,不要写下你自己的答案并接受它,而是接受帮助你的答案,并对该答案进行评论,如果你做了比答案中提供的更多的工作,你会做些什么。奖励那些帮助过你的人(在这种情况下是mc_fish)。我不记得为什么我要写新的答案并接受它,但我认为你可能是对的,我当时投票支持mc_fish的答案。谢谢你给我指出这个@EmilS。
canvas.drawtext(mytext,rect.left,rect.top,paint);
canvas.restore();