我正在尝试创建一个自定义的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);
}
}
答案 0 :(得分:0)
我已经实现了您的代码,它正在按预期工作。我唯一需要改变的是从类中删除static
修饰符。您打算使用static
吗?