每一个子块 填充到一个父块里面之前,每一个字块要单独声明一个,不能共用一个字块 不断增加到父快中。。这样是可以解决的,主要注意声明的时候别弄个全局变量共用成一个,尽量弄局部变量 就好了 。
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选项,所以考虑用
- LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- FrameLayout arrowLayout=(FrameLayout) inflater.inflate(R.layout.arrow, null);
- ivr=(ImageView) arrowLayout.findViewById(R.id.xx);
方法来加载现成的imageview。但是出现了
- The specified child already has a parent. You must call removeView() on the child's parent first.
错误。
原因是:一女不不能二嫁,一个view不能有同级别的两个parent,
所以需要这样:
- ivr=(ImageView) arrowLayout.findViewById(R.id.xx1);
- ivl=(ImageView) arrowLayout.findViewById(R.id.xx2);
- <span style="color: #ff0000;">arrowLayout.removeAllViews();</span>
- this.addView(ivr);
- this.addView(ivl);