我需要以编程方式创建两个视图(因为我需要访问其中一个视图的ondraw)。出于某种原因,无论我如何将视图添加到contentview,它们都不会垂直堆叠,一个在另一个之下。
我可以使用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);
}
答案 0 :(得分:1)
您可以将线性布局对象的方向设置为垂直
答案 1 :(得分:1)
似乎有两个问题,尽管调试此代码比使用XML更难。
首先,您未能将线性布局的“方向”设置为“垂直”。对于水平方向,一切都将是一行。对于垂直布局,每个小部件将在从顶部到底部的单独行上。
其次,“填充父母”看起来很可疑。除非相对布局或绝对大小调整阻止它,否则任何填充父级都会接管所有内容并隐藏所有其他小部件。这几乎总是错误的解决方案。尝试使用重量。
您可以考虑先在XML中完全按照自己的喜好,然后将其转换为程序化设置,尽可能保持转换的机械性。祝你好运!
答案 2 :(得分:1)
您是否尝试将布局方向设置为垂直方向:
mLinearLayout.setOrientation(1);