我有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()。请帮忙!
答案 0 :(得分:0)
您必须使用addRule
到布局参数来相对于彼此设置视图。至于有关重新添加视图的投诉,您可以尝试两个独立的视图实例。虽然它将是相同的布局,但父母不会知道。
编辑:
要占用半屏,您必须告诉父视图为子视图分配多少空间:
RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40);
childView.setLayoutParams(forChild);
答案 1 :(得分:0)
因为它只显示layout4的原因是primaryLayout是一个相对布局。除非你指定一些东西告诉它在那个布局中的位置,所有这些都在左上角。所以一切都被放在一起。
您无法多次添加相同的布局。您必须为所需的每个版本重新填充一次,然后添加结果。它就像OOP- RelativeLayout是布局的一个实例,膨胀实例化一个新的。