2012-01-09 236 views
1

我想将视图添加到自定义ViewGroup。 ViewGroup被绘制,但没有添加到它的视图是可见的。 LineView的(扩展视图)onDraw()方法不会被调用。我究竟做错了什么?将视图添加到自定义ViewGroup

public class TestActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ShapeView shapeView = new ShapeView(this); 
     shapeView.setBackgroundColor(Color.RED); 
     drawContainer = (RelativeLayout)findViewById(R.id.draw_container); 
     drawContainer.addView(shapeView); 
    } 
} 


public class ShapeView extends ViewGroup { 

    private LineView mLineView; 

    public ShapeView (Context context) { 
     super(context); 
     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(200, 200); 
     this.setLayoutParams(p); 
     mLineView = new LineView(context); 
     this.addView(mLineView); 
    }  
} 

回答

0

我也许错了,但你应该不会被添加到shapeView布局的“主”?什么是drawContainer?我看不到它正在实例化,而不是在文档中。我假设main包含一个相对/线性布局。

通过访问它:

RelativeLayout rel = (RelativeLayout) findViewById(R.id.container); 

(其中ID更改为匹配您的ID)

则:

rel.addView(shapeView); 
+0

对不起,忘了该行的代码粘贴到问题。更新。 – KcYxA 2012-01-09 01:34:57

+0

没关系,我认为是50/50。好的,你真的看到了什么?你有红色的方块吗?或者你什么都看不到? – 2012-01-09 01:37:41

+0

我看到红色的方块,没有别的。我有一种感觉,我应该把一些东西放到我的onLayout()方法中,但我不确定它的用途以及如何正确编写它。 – KcYxA 2012-01-09 01:40:27

相关问题