将其他的视图添加到当前容器视图中需要如下几步:
1.获得当前的容器视图对象。
2.获得或创建待添加的视图对象。
3.将相应的视图对象添加到容器视图中。
代码如下:
LinearLayout linearLayout_main = (LinearLayout) getLayoutInflater()
.inflate(R.layout.activity_main, null);
setContentView(linearLayout_main);
LinearLayout linearLayout_secondLayout = (LinearLayout) getLayoutInflater()
.inflate(R.layout.activity_second, linearLayout_main);
其中inflate的方法第一个参数表示XML布局资源文件中的ID,第二个参数表示获得容器视图对象后,要将该对象添加到哪个容器视图对象中。如果不想将获得的容器视图对象添加到任何其他容器中,inflate方法的第二个参数设为null。
除了上面的添加方式外,也可以使用addView方法向容器视图中添加视图对象,但要将inflate方法的第二个参数值设为null。
代码如下:
LinearLayout linearLayout_main = (LinearLayout) getLayoutInflater()
.inflate(R.layout.activity_main, null);
setContentView(linearLayout_main);
LinearLayout linearLayout_second = (LinearLayout) getLayoutInflater()
.inflate(R.layout.activity_second, null);
linearLayout_main.addView(linearLayout_second);
注意:以上两种添加方式效果略有不同,如图所示:
除此之外,还可以完全使用Java代码创建一个视图对象,并将该对象添加到容器视图中,代码如下:
EditText editText = new EditText(this);
linearLayout_main.addView(editText);
- 如果要向容器视图中添加新的视图或进行其他操作,setContentView方法的参数值对应直接使用容器视图对象,而不是布局文件的资源ID,因为这样可以向容器视图对象中添加新的视图。
- 一个视图对象只能有一个父视图,也就是说,一个视图对象只能被包含在一个容器视图中。因此,在向容器视图添加其他视图时,不能将XML布局文件中非根节点的视图对象添加到其他的容器视图中。