自定义EditText,其周围绘制的矩形与重力不兼容

时间:2014-11-05 20:22:43

标签: android android-edittext gravity

我正在尝试创建一个自定义的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);
    }
}

1 个答案:

答案 0 :(得分:0)

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