You need to enable JavaScript to run this app. Android Studio中如何用Java实现Canvas文本居中(不修改XML,适配任意尺寸)
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何用Java实现Canvas文本居中(不修改XML,适配任意尺寸)

实现思路

要让文本完全居中,不能直接使用Canvas宽高的1/2作为绘制坐标,因为drawText的默认坐标是文本的基线(baseline)位置,需要结合文本自身的尺寸做偏移计算,全程动态获取参数即可适配任意Canvas尺寸。

完整Java实现代码

自定义View核心逻辑

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

public class CenterTextCanvas extends View {
    // 可自行修改为需要展示的文本
    private final String mDrawContent = "居中测试文本";
    private final Paint mTextPaint;

    public CenterTextCanvas(Context context) {
        super(context);
        // 初始化画笔配置,可根据需求调整文字大小、颜色
        mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mTextPaint.setTextSize(60f);
        mTextPaint.setColor(0xFF000000);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 动态获取Canvas宽高,适配任意尺寸
        int canvasWidth = canvas.getWidth();
        int canvasHeight = canvas.getHeight();

        // 动态测量待绘制文本的实际宽度
        float textWidth = mTextPaint.measureText(mDrawContent);

        // 获取文字度量参数,计算垂直偏移量
        Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
        float textTotalHeight = fontMetrics.descent - fontMetrics.ascent;

        // 计算居中坐标
        // 水平居中:让文本的水平中心对齐Canvas中心
        float centerX = (canvasWidth - textWidth) / 2;
        // 垂直居中:调整基线位置,让文本的垂直中心对齐Canvas中心
        float centerY = canvasHeight / 2 + (textTotalHeight / 2 - fontMetrics.descent);

        // 绘制文本
        canvas.drawText(mDrawContent, centerX, centerY, mTextPaint);
    }
}

无XML调用方式

直接在Activity的onCreate方法中加载自定义View即可,完全不需要编写或修改XML布局:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 直接将自定义View设为页面内容视图
    setContentView(new CenterTextCanvas(this));
}

关键说明

  • 所有尺寸动态计算,未写死任何像素值,当屏幕旋转、Canvas尺寸调整时,onDraw会自动重算坐标,始终保持居中
  • 画笔开启了抗锯齿,绘制的文本边缘更清晰
  • 可自由修改构造方法中的文字大小、颜色、展示内容,不需要改动居中逻辑

内容的提问来源于stack exchange,提问作者redoc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 22:36:05