6

内部にカスタムの吹き出しを描画するカスタム ビューを作成しました。カスタム ビューにテキストを配置したいと思います。drawTextOnPathを使用していますが、正しく機能しません。テキストを 1 行ずつ表示したいのです。

カスタム ビュー - 吹き出し

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);

ありがとう。

4

2 に答える 2

1

こんな感じで吹き出しに四角形を作りました

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。

于 2013-07-03T04:49:50.957 に答える