Android动态添加视图


         在更高的Android应用中,往往需要动态添加视图。要实现这个功能,最重要的是获得当前视图容器对象,这个容器对象所对应的类需要继承ViewGroup类。

将其他的视图添加到当前容器视图中需要如下几步:

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);


向容器中添加视图对象时需要注意以下几点:

  1. 如果要向容器视图中添加新的视图或进行其他操作,setContentView方法的参数值对应直接使用容器视图对象,而不是布局文件的资源ID,因为这样可以向容器视图对象中添加新的视图。
  2. 一个视图对象只能有一个父视图,也就是说,一个视图对象只能被包含在一个容器视图中。因此,在向容器视图添加其他视图时,不能将XML布局文件中非根节点的视图对象添加到其他的容器视图中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值