自定义组件
自定义view分类(四种)
-
继承view重写onDraw方法
主要用于实现一些不规则效果,这种效果不方便使用排列组合来达到,往往需要静态或者动态显示一些不规则图形。采用这种方法需要自己支持wrap_content,padding也需要自己处理。 -
继承viewGroup派生特殊的layout
这种方式主要用于实现自定义布局,需要合适地处理ViewGroup的测量和布局两个过程,并同时处理子元素的测量和布局过程。 -
继承特定的View
这种方式比较常见,一般是扩展某种已有的View,比如TextView,这种方法比较容易实现,不需要自己支持wrap_content和padding等。 -
继承特定的ViewGroup(比如LinearLayout)
当某种效果看起来很像几种View组合在一起的时候,可以采用这种方法实现。采用这种方法不需要自己处理ViewGroup的测量和布局,需要注意本方法和方法2的区别,一般来说方法2能实现的效果方法4也都能实现,两者的主要差别在于方法2更接近View的底层。
本文将对第四点:继承特定的ViewGroup进行学习与总结
自定义view默认调用第二个构造方法,因此在第二个构造方法进行相关代码的处理
原因:Android View 四个构造函数详解-
自定义属性,在attrs.xml文件下定义相关属性
-
在自定义view中获取自定义属性
遇到问题
- 在xml中使用自定义view无代码自动补全功能,包括android属性也不显示
解决方法:将自定义view与其使用的地方放到同一个model中。原因:https://www.jianshu.com/p/77c18a66dfe3