ViewGroup.addView()后导致layout_height等属性失效原因

首先看一下addview源码

public void addView(View child) {
        addView(child, -1);
}


public void addView(View child, int index) {
        LayoutParams params = child.getLayoutParams();
        if (params == null) {
            params = generateDefaultLayoutParams();
            if (params == null) {
                throw new IllegalArgumentException("generateDefaultLayoutParams() cannot return null");
            }
        }
        addView(child, index, params);
}
解决方案:     1.当addView方法完成之后,重新设置子控件vChild的LayoutParams属性即可。
调用inflate (int resource, ViewGroup root, boolean attachToRoot) 方法。将第二个参数设为待加入布局的父布局,第三个参数为false


Inflate(resId , null ) 只创建temp ,返回temp

Inflate(resId , parent, false )创建temp,然后执行temp.setLayoutParams(params);返回temp

Inflate(resId , parent, true ) 创建temp,然后执行root.addView(temp, params);最后返回root

更多参见:http://blog.csdn.net/lmj623565791/article/details/38171465

你可能感兴趣的:(android笔记)