android 在图形中间添加字体

本文介绍了一种在Android自定义控件中使文本始终居中的方法,避免了因屏幕尺寸变化导致的文本偏移问题。通过使用Paint的setTextAlign()方法,并设置为CENTER模式,无论控件大小如何改变,文本都能保持居中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android 自定义控件时,往往需要在控件上方加上相应的字体,在网上看了一些答案发现很多人还是通过获取计算图形的绝对坐标,然后通过一些计算方法得到中心坐标来绘制字体,那么如果直接用绝对坐标在图形上画的话,一旦屏幕尺寸变化或者字体发生变化,那么字体将不再居中,有什么方法可以让字体无论图形如何变换还可以在字体中间呢?
答案是使用Paint自带的方法setTextAlign();该方法可以设置字体的显示位置,方法要求传入Align参数,该参数属性有LEFT,RIGHT,CENTER三种,分别可以设置字体位于左边,右边,和中间,而中间正是我们需要的。
下面是简短的代码:

public IconView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.IconView);
        text = typedArray.getString(R.styleable.IconView_text);
        textSize = typedArray.getDimension(R.styleable.IconView_textSize,20);
        typedArray.recycle();
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setTextSize(textSize);
        mPaint.setTextAlign(Paint.Align.CENTER);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int width = getWidth();
        int height = getHeight();
        canvas.drawRect(0,0,width,height,mPaint);
        mPaint.setColor(Color.GREEN);
        canvas.drawText(text,width/2,height/2,mPaint);
    }

以下为效果图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值