实习以来已经写许多个自定义控件了,所以这章有很多知识我就不想写了。如果有人想了解就自己上网找吧。
不讲了,就是给自定义的控件添加自定义属性。
步骤大概就是
-
在 attrs下添加
<declare-styleable>
标签,指明对应的控件,然后在下面声明属性的名称和类型。 -
在xml中就可以在使用控件时使用该自定义属性。
-
代码在该控件中 ,通过第三个构造函数的TypedArray来获取对应的属性的值,然后就可以对该属性进行操作就ok了。
View和ViewGroup的绘制流程的三大流程
balabalabala。。。
在给Viewgroup加margin时,如果在onLayout()里面加,那就也要在onMeasure()里加。否则会导致Container太小而控件显示不全的问题。
我们可以重写 generateLayoueParams()和generateDefaultLayoutParams()函数,在里面直接返回MarginLayoutParams()
只有重写generateLayoueParams()函数才能获取到控件的margin值。
这是因为在contain中初始化子控件时,会调用generateLayoueParams§来为子控件生成对应的布局属性,但默认只生成layout_width和layout_height,即正常情况下generateLayoueParams()得到的LayoutParams是得不到margin值的。而MarginLayoutParams是派生自LayoutParams的,所以我们在LayoutParams强转MarginLayoutParams是不会报错的。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019062317153666.png?x-oss-process=image/w
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.c