The specified child already has a parent. You must call removeView() on the chil

每一个子块 填充到一个父块里面之前,每一个字块要单独声明一个,不能共用一个字块 不断增加到父快中。。这样是可以解决的,主要注意声明的时候别弄个全局变量共用成一个,尽量弄局部变量  就好了 。





View.setLayoutParams 和 linearlayout.addView(View child, LayoutParams params)  这个2个动态布局的区别 

没有区别,params 都是都是 view的。 如果要说区别
linearlayout.addView(View child, LayoutParams params) 

linearlayout.addView(view);
View.setLayoutParams

上面和下面是一样的。

linearlayout.addView(View child, LayoutParams params) 是往linearlayout上添加child。后面params是设置这个child的布局情况。。。
而View.setLayoutParams 就是设置View的布局情况。




博1:

我需要制作一个图形插件,需要用到freamelayout中的叠加功能,屏幕分别设置了两个imageview,设置的layout_gravity为left,true。但是我发现在动态生成imageview时,无法设置其layout_gravity选项,所以考虑用

Java代码   收藏代码
  1. LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  2. FrameLayout arrowLayout=(FrameLayout) inflater.inflate(R.layout.arrow, null);  
Java代码   收藏代码
  1. ivr=(ImageView) arrowLayout.findViewById(R.id.xx);  

 

方法来加载现成的imageview。但是出现了

 

Xml代码   收藏代码
  1. The specified child already has a parent. You must call removeView() on the child's parent first.  

 

错误。

 

原因是:一女不不能二嫁,一个view不能有同级别的两个parent,

所以需要这样:

Java代码   收藏代码
  1. ivr=(ImageView) arrowLayout.findViewById(R.id.xx1);  
  2. ivl=(ImageView) arrowLayout.findViewById(R.id.xx2);  
  3. <span style="color: #ff0000;">arrowLayout.removeAllViews();</span>  
  4. this.addView(ivr);        
  5. this.addView(ivl);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值