0

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

4

2 回答 2

0

您必须使用addRule布局参数来设置视图之间的关系。至于重新添加视图的抱怨,您可以尝试两个独立的视图实例。虽然它将是相同的布局,但父母不会知道这一点。

编辑:

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

RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40);
childView.setLayoutParams(forChild);
于 2013-03-15T17:37:29.103 回答
0

它只显示 layout4 的原因是 primaryLayout 是一个相对布局。除非你指定一些东西告诉它他们在那个布局中去哪里,否则它都在左上角。所以一切都被叠放在一起。

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

于 2013-03-15T17:39:02.317 回答