我有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()。请帮帮我!
发布于 2013-03-15 17:39:02
THe之所以只显示layout4,是因为primaryLayout是一个相对布局。除非您指定某些内容来告诉它它们在布局中的位置,否则所有内容都会显示在左上角。所以所有的东西都被放在另一个上面。
您不能多次添加相同的布局。你必须为每个你想要的版本重新膨胀一次,然后添加结果。它类似于OOP- RelativeLayout是布局的一个实例,膨胀实例化一个新的布局。
发布于 2013-03-15 17:37:29
您必须使用布局参数的addRule
来设置彼此之间的视图。对于重新添加视图的投诉,您可以尝试视图的两个独立实例。虽然它将是相同的布局,但父级不会知道这一点。
编辑:
要使占据半屏,您必须告诉父视图要为子视图分配多少空间:
RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40);
childView.setLayoutParams(forChild);
https://stackoverflow.com/questions/15438648
复制相似问题