2010-06-03 94 views
2

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

我可以做到这一点,使用XML使用RelativeLayout和布局定位,但与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); 
    } 

回答

1

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

1

有似乎有两个问题,虽然这是很难调试代码比XML。

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

其次,“填写家长”看起来很可疑。任何填充父项,除非相对布局或绝对大小限制阻止它,接管所有内容并隐藏所有其他小部件。这几乎总是错误的解决方案。尝试使用体重代替。

您可能会首先考虑如何在XML中准确获取这些内容,然后将其转换为编程设置,并尽可能保持机械转换。祝你好运!

1

你有没有尝试设置布局方向上,以verticcal:

mLinearLayout.setOrientation(1);

+0

问题解决了,非常感谢! – PeEll 2010-06-03 11:16:02

+1

@PeEll:如果修复了这个问题,您可能需要将此标记为给予Suresh信用的正确答案。这就是说,我强烈建议使用mLinearLayout.setOrientation(VERTICAL)而不是mLinearLayout.setOrientation(1)。这会改善你的代码的可读性。 – 2010-06-03 12:54:28