1. ホーム

[解決済み】Android Centerのテキストをキャンバスに表示する

2022-04-10 21:51:19

質問

以下のコードでテキストを表示しようとしています。 問題は、テキストが水平方向の中央に配置されないことです。 座標を設定すると drawText の場合、この位置にテキストの下部が設定されます。テキストを水平方向にも中央に配置するように描画してほしいのですが。

これは、私の問題をさらに表示するための画像です。

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    //canvas.drawRGB(2, 2, 200);
    Paint textPaint = new Paint();
    textPaint.setARGB(200, 254, 0, 0);
    textPaint.setTextAlign(Align.CENTER);
    textPaint.setTypeface(font);
    textPaint.setTextSize(300);
    canvas.drawText("Hello", canvas.getWidth()/2, canvas.getHeight()/2  , textPaint);
}

解決方法は?

以下をお試しください。

 Paint textPaint = new Paint();
 textPaint.setTextAlign(Paint.Align.CENTER);

 int xPos = (canvas.getWidth() / 2);
 int yPos = (int) ((canvas.getHeight() / 2) - ((textPaint.descent() + textPaint.ascent()) / 2)) ; 
 //((textPaint.descent() + textPaint.ascent()) / 2) is the distance from the baseline to the center.

 canvas.drawText("Hello", xPos, yPos, textPaint);