2013-03-15 68 views
0

我有3个相对布局,我需要创建一个单独的setcontetntview,这是这些布局的组合,每个组合添加3次并共享相同的屏幕空间,并且需要以编程方式完成。我开始创建一个只增加2个屏幕的新布局,多次组合3个相对布局

RelativeLayout primaryLayout = new RelativeLayout(this); 
    LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    RelativeLayout newLayout = (RelativeLayout)layoutInflater.inflate(R.layout.layout3, null, false); 
    RelativeLayout newLayout1 = (RelativeLayout)layoutInflater.inflate(R.layout.layout4, null, false); 
    primaryLayout.addView(newLayout); 
    primaryLayout.addView(newLayout1); 
    setContentView(primaryLayout); 

这只显示layout4。另外,如果我再次添加相同的布局,它给出的错误说明指定的孩子已经有一个家长,你必须先调用父孩子的removeview()。请帮忙!

回答

0

的原因其只显示layout4是,primaryLayout是一个相对的布局。除非你指定了一些信息,告诉它在布局中的位置,否则它将全部位于左上角。因此,一切都在彼此之上。

您不能多次添加相同的布局。您需要为每个需要的版本重新添加一次,然后添加结果。它像OOP一样,RelativeLayout是布局的一个实例,膨胀实例化一个新的。

+0

感谢您的回复,我添加了规则,但如何让他们占据半屏? – bharath 2013-03-15 17:45:22

0

您必须使用addRule来布局参数来设置相对于彼此的视图。至于关于重新添加视图的投诉,您可以尝试两个独立的视图实例。虽然它将是相同的布局,但家长不会知道这一点。

编辑:

要占据你要告诉父视图多大的空间,以配发的子视图半屏:

RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40); 
childView.setLayoutParams(forChild); 
+0

感谢您的回复,我添加了规则,但如何让它们占据每个半屏? – bharath 2013-03-15 18:02:37

+0

我已编辑过,以向您展示如何设置子视图的大小。你不必使用实际的数字,你可以使用诸如'wrap_content'等东西。只是玩弄它。 – learner 2013-03-15 20:16:25