2014-11-05 66 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