2013-03-04 172 views
0

我試圖繪製一個可繪製的背景與路徑。但我得到了一個我無法繪製的點,因爲我需要接收背景的對象的大小。是否有函數來查找我將繪製的特定視圖的大小?在Android中繪製無任何尺寸的自定義繪圖

public class CustomDrawableEditText extends Drawable{ 
private Context context; 
public CustomDrawableEditText(Context context) { 
    // TODO Auto-generated constructor stub 
    this.context = context; 
} 
@Override 
public void draw(Canvas canvas) { 
    // TODO Auto-generated method stub 
    Path path = new Path(); 
    Paint paint = new Paint(); 
    path.moveTo(0, 0); 
    path.lineTo(10, 0); 
    path.moveTo(0, 0); 
    path.lineTo(0, Y); 
    path.lineTo(10, Y); 
    path.moveTo(X, 0); 
    path.lineTo(X-10, 0); 
    path.moveTo(X, 0); 
    path.lineTo(X, X); 
    path.lineTo(X-10, X); 
    paint.setColor(context.getResources().getColor(R.color.orange)); 
    paint.setStrokeWidth(2); 
    paint.setStyle(Paint.Style.STROKE); 
    canvas.drawPath(path, paint); 
} 

private int getY() { 
    final Resources res = context.getResources(); 
    final float scale = res.getDisplayMetrics().density; 
    return (int) (res.getDimension(R.dimen.dim4) * scale + 0.5f); 
} 
@Override 
public int getOpacity() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public void setAlpha(int alpha) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void setColorFilter(ColorFilter cf) { 
    // TODO Auto-generated method stub 

} 

} 

回答

0

要獲得View的大小,你可以調用getWidth()getHeight()。請注意,您可能對getMeasuredWidth()getMeasuredHeight()也有興趣。

請確保這些方法在您的視圖的佈局過程之後調用

+0

我已經通過getwidth和getheight但都是0; – Tsunaze 2013-03-04 15:52:08

+0

@Tsunaze我又增加了一行。 – poitroae 2013-03-04 15:53:18

+0

有問題的視圖通過單擊按鈕後的layoutinflater顯示。我認爲這是在佈局過程之後。 – Tsunaze 2013-03-04 15:54:40

0

致電Drawable.getBounds()Drawable.copyBounds(Rect rect)方法。

這兩個方法應該返回View的界限(當View的大小的變化,它會調用(應該叫)每個DrawableDrawable.setBounds方法,已與相應的參數值),其中View希望你Drawable被繪製。您自己的自定義Drawable可以通過調用Drawable.getBounds()Drawable.copyBounds(Rect rect)來檢索該值。