2

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

我可以使用使用 RelativeLayout 和布局定位的 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);
    }
4

3 回答 3

1

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

于 2010-06-03T06:40:43.373 回答
1

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

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

其次,“Fill Parent”看起来很可疑。任何填充父级,除非相对布局或绝对大小阻止它,否则会接管所有内容并隐藏所有其他小部件。这几乎总是错误的解决方案。尝试使用重量。

您可能会考虑首先在 XML 中以您喜欢的方式获得它,然后将其转换为程序化设置,使转换尽可能机械化。祝你好运!

于 2010-06-03T07:04:49.110 回答
1

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

mLinearLayout.setOrientation(1);

于 2010-06-03T09:00:43.357 回答