我需要以编程方式创建两个视图(因为我需要访问其中一个视图的 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);
}
尽管调试此代码比调试 XML 更困难,但似乎存在两个问题。
首先,您未能将线性布局的方向设置为垂直。对于水平方向,一切都将是一条线。对于垂直布局,每个小部件都将位于从上到下的单独行上。
其次,“填充父级”看起来很可疑。任何填充父项,除非相对布局或绝对大小阻止它,都会接管所有内容并隐藏所有其他小部件。这几乎总是错误的解决方案。尝试使用重物代替。
您可能会考虑首先按照您喜欢的方式在 XML 中实现此目的,然后将其转换为编程设置,尽可能保持转换机械化。祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)