Android LinearLayout或RelativeLayout的帮助

Android LinearLayout或RelativeLayout的帮助,android,android-linearlayout,layout,android-relativelayout,Android,Android Linearlayout,Layout,Android Relativelayout,我需要以编程方式创建两个视图(因为我需要访问其中一个视图的ondraw)。出于某种原因,无论我如何将视图添加到contentview,它们都不会垂直堆叠显示,一个在另一个之下 我可以使用相对的布局和布局定位来使用XML,但是使用XML我不能创建视图对象并重载ondraw方法 我对编程方法有什么错误,我如何解决这个问题 LinearLayout mLinearLayout; public void onCreate(Bundle savedInstanceState) {

我需要以编程方式创建两个视图(因为我需要访问其中一个视图的ondraw)。出于某种原因,无论我如何将视图添加到contentview,它们都不会垂直堆叠显示,一个在另一个之下

我可以使用相对的布局和布局定位来使用XML,但是使用XML我不能创建视图对象并重载ondraw方法

我对编程方法有什么错误,我如何解决这个问题

LinearLayout mLinearLayout;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create a LinearLayout in which to add the ImageView
        mLinearLayout = new LinearLayout(this);

        TextView tv = new TextView(this);
            tv.setBackgroundColor(0xff333333);
        tv.setText("Enter your member number:");
        tv.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));



        DrawableView i = new DrawableView(this);
        i.layout(0,40,0,0);
        i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));

        mLinearLayout.addView(tv);
        mLinearLayout.addView(i,300,300);
        setContentView(mLinearLayout);
    }

您可以将线性布局对象的方向设置为垂直

,这似乎有两个问题,尽管调试此代码比调试XML更困难

首先,未能将线性布局的方向设置为垂直。对于水平方向,所有内容都是一条线。对于垂直布局,每个小部件将位于从上到下的单独行上

其次,“填充父对象”看起来可疑。任何填充父项,除非有相对布局或绝对大小限制,否则将接管所有内容并隐藏所有其他小部件。这几乎总是错误的解决方案。试着用砝码代替


您可以考虑首先在XML中实现这一点,然后将其转换为编程设置,尽可能保持转换的机械性。祝你好运

是否尝试将布局方向设置为垂直:


mLinearLayout.setOrientation(1)

@PeEll:如果这解决了问题,您可能希望将此标记为正确答案,以给予Suresh评分。也就是说,我强烈建议使用mLinearLayout.setOrientation(垂直)而不是mLinearLayout.setOrientation(1)。这将提高代码的可读性。