就拿LinearLayout来说,布局文件里LinearLayout标签里的“android:orientation=“的值应该在LinearLayout的构造函数中获取:
而LinearLayout的子控件的layout_weight等的属性是在LinearLayout的内部属性类public static class LayoutParams extends ViewGroup.MarginLayoutParams中获取的
我自己写的自定义布局获取子控件的属性:
1、首先要重写generateLayoutParams方法
2、定义继承MarginLayoutParams的内部类CustomLayoutParams
3、在重写的generateLayoutParams方法里调用CustomLayoutParams的构造方法
而MarginLayoutParams的构造方法只在重写的generateLayoutParams方法里调用,查看ViewGroup中是在哪里调用generateLayoutParams的:
在addViewInner中调用,而
addViewInner是在addView中调用的。