昨天梳理了一下LayoutInflater解析xml的简单脉络,简单的分析了下xml创建View的过程,在parentView构建子View的过程中在rinflate方法里面发现下面的一段代码:
final View view = createViewFromTag(parent, name, attrs);
final ViewGroup viewGroup = (ViewGroup) parent;
//创建一个layoutPrarams对象
final ViewGroup.LayoutParams params = viewGroup.generateLayoutParams(attrs);
//继续递归调用 解析当前view 的子view
rInflate(parser, view, attrs, true);
//把生成的view添加到parent view中
//需要注意的是addView每次都调用了该子view的parentView所产生的Layoutparams对象
viewGroup.addView(view, params);
上面的这几行代码可以得到如下结论:
1)child View的布局参数LayoutParams是由parent View创建出来,并设置给child View的。
2)观察View的源码可知,该类提供了setLayoutParams方法,所