多次组合3个相对布局

时间:2013-03-15 17:30:48

标签: android android-layout relativelayout layout-inflater

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

    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()。请帮忙!

2 个答案:

答案 0 :(得分:0)

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

编辑:

要占用半屏,您必须告诉父视图为子视图分配多少空间:

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

答案 1 :(得分:0)

因为它只显示layout4的原因是primaryLayout是一个相对布局。除非你指定一些东西告诉它在那个布局中的位置,所有这些都在左上角。所以一切都被放在一起。

您无法多次添加相同的布局。您必须为所需的每个版本重新填充一次,然后添加结果。它就像OOP- RelativeLayout是布局的一个实例,膨胀实例化一个新的。