2011-10-03 77 views
-1

我的代碼在這裏有什麼問題,爲什麼它不是在屏幕上繪製我的自定義視圖。問題與我的應用程序中的自定義繪圖

class CustActivty extends Activty{ 
private ShapeDrawable mDrawable;; 
Path path; 

public void onCreate(Bundle savedInstanceState){ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.imagelayout); 
CustomView view=new CustomView(getApplicationContext()); 
RelativeLayout rl=(RelativeLayout)findViewById(R.id.relativeLayout1); 
rl.addView(view); 
} 


class CustomView extends View{ 

CustomView(Context context){ 

super(context); path = new Path(); RectF rec = new RectF(10,10,400,400);

path.addArc(rec,90,180); 

mDrawable = new ShapeDrawable(new PathShape(path,400,400)); 
mDrawable.setBounds(10, 10, 400,400); 
mDrawable.getPaint().setColor(0xff74AC23); 
} 
protected void onDraw(Canvas canvas){ 
mDrawable.draw(canvas); 

} 
} 
} 

Plz任何人都有idea.Plz幫助。

+0

嘗試'的setContentView(圖)'忘了'rl'的..告訴我如果它畫 –

+0

是的,它正在繪製沒有relativelayout.然後相對佈局的問題是什麼? –

+0

你必須'rl.addView(view,params);''params'應該被定義爲'RelativeLayout.LayoutParams' –

回答

2

您應該指定LayoutParamsview將使用被添加到RelativeLayout

所以,而不只是rl.addView(view)

RelativeLayout.LayoutParams params = //initialise them as you want 
rl.addView(view, params); 
+0

其中一個問題。如果我們沒有指定任何layoutparams,那麼它會阻止任何默認參數?但它不是爲了什麼? –

+0

我認爲你的CustomView是一個非常原始的類。你可能沒有處理寬度和高度。所以,如果默認值是'WRAP_CONTENT',那麼您的視圖可能會獲得零寬度和高度。我只是猜測。不確定。 –

相關問題