2014-11-05 19 views
0

我想创建一个自定义的EditText类与一个矩形绘制它。我很容易就可以工作。但后来我也希望文字居中,因此我设置了重心=中心。然而,这使得箱子周围的矩形消失。重力属性是否改变边界框?我如何检索正确的边界框?自定义EditText与周围绘制的矩形与重力不兼容

类如下:

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

怎么样this.setGravity(Gravity.CENTER)? – 2014-11-05 21:04:25

+0

谢谢。没有帮助强硬。 – 2014-11-05 21:44:39

+0

你是如何构建Letterbox对象的?用findViewById? – David 2014-11-05 22:11:47

回答

0

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

+0

感谢您的快速回放。我把它声明为静态的,因为我把它作为我主要活动的一个子类。但是,如果我将它移动到它自己的源文件并删除静态我仍然无法使其工作。你使用了哪个API版本? – 2014-11-05 21:44:13

+0

targetSDKVersion =“19”,在API级别为16的仿真器上运行。我还使用了支持库v4和v7。 – 2014-11-05 22:00:04