自定义的布局的布局属性的获取和子控件的属性的获取

就拿LinearLayout来说,布局文件里LinearLayout标签里的“android:orientation=“的值应该在LinearLayout的构造函数中获取:

自定义的布局的布局属性的获取和子控件的属性的获取_第1张图片
而LinearLayout的子控件的layout_weight等的属性是在LinearLayout的内部属性类public static class LayoutParams extends ViewGroup.MarginLayoutParams中获取的

自定义的布局的布局属性的获取和子控件的属性的获取_第2张图片

我自己写的自定义布局获取子控件的属性:
1、首先要重写generateLayoutParams方法
2、定义继承MarginLayoutParams的内部类CustomLayoutParams
3、在重写的generateLayoutParams方法里调用CustomLayoutParams的构造方法

自定义的布局的布局属性的获取和子控件的属性的获取_第3张图片
自定义的布局的布局属性的获取和子控件的属性的获取_第4张图片
自定义的布局的布局属性的获取和子控件的属性的获取_第5张图片
自定义的布局的布局属性的获取和子控件的属性的获取_第6张图片
而MarginLayoutParams的构造方法只在重写的generateLayoutParams方法里调用,查看ViewGroup中是在哪里调用generateLayoutParams的:
自定义的布局的布局属性的获取和子控件的属性的获取_第7张图片
在addViewInner中调用,而
自定义的布局的布局属性的获取和子控件的属性的获取_第8张图片

addViewInner是在addView中调用的。

你可能感兴趣的:(自定义的布局的布局属性的获取和子控件的属性的获取)