Canvas Android中的中心文字

ik0*_*024 2 android android-canvas

我想将我的文本(tp-TextPaint)放在我在画布上绘制的矩形语音气泡图中.有谁有想法吗?我使用canvas.drawText()实现了它,但我想使用staticLayout来获取它,以便在调整画布宽度和高度时调整文本大小.以下是我的代码.

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    drawPath.reset();

    drawPath.moveTo(0, 0);
    drawPath.lineTo(getWidth(), 0);
    drawPath.lineTo(getWidth(), 100);
    drawPath.lineTo((getWidth()/2) +20, 100);
    drawPath.lineTo(getWidth()/2, 140);
    drawPath.lineTo((getWidth()/2)-20, 100);
    drawPath.lineTo(0, 100);
    drawPath.lineTo(0, 0);

    canvas.drawPath(drawPath, drawPaint);

    TextPaint tp = new TextPaint();
    tp.setColor(Color.BLACK);
    tp.setTextSize(25);
    tp.setAntiAlias(true);


    StaticLayout sl = new StaticLayout("" + s, tp, getWidth(),Alignment.ALIGN_CENTER, 1.0f, 0.0f, true);
     sl.draw(canvas);

     }
Run Code Online (Sandbox Code Playgroud)

Gop*_*opi 13

这可能对你有所帮助......

public static void drawText(Canvas canvas, Paint paint, String text) {
    Rect bounds = new Rect();
    paint.getTextBounds(text, 0, text.length(), bounds);
    int x = (canvas.getWidth() / 2) - (bounds.width() / 2);
    int y = (canvas.getHeight() / 2) - (bounds.height() / 2);
    canvas.drawText(text, x, y, paint);
}
Run Code Online (Sandbox Code Playgroud)