自定义编辑器周围绘制矩形的文本与重力不兼容



我正在尝试创建一个带有矩形的自定义EditText类。但后来我也希望文本居中,因此我设置了gravity=center。然而,这使得盒子周围的矩形消失了。重力属性是否会更改边界框?如何检索正确的边界框?

类别如下:

public static class LetterBox extends EditText {
    private Paint mPaint = new Paint();
    public LetterBox(Context context) {
        super(context);
        this.setupPaint();
    }
    public LetterBox(Context context, AttributeSet attrs) {
        super(context,attrs);
        this.setupPaint();
        super.setGravity(Gravity.CENTER);
    }
    public LetterBox(Context context, AttributeSet attrs, int defStyle) {
        super(context,attrs,defStyle);
        this.setupPaint();
        super.setGravity(Gravity.CENTER);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawRect(0,0,getMeasuredWidth()-1,getMeasuredHeight()-1,mPaint);
        super.onDraw(canvas);
    }
    private void setupPaint() {
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(Color.BLACK);
    }
}

我已经实现了您的代码,它正在按预期工作。我唯一需要更改的就是从类中删除static修饰符。您打算使用static吗?

最新更新