2019-12-18

自定义组件

自定义view分类(四种)

  • 继承view重写onDraw方法
    主要用于实现一些不规则效果,这种效果不方便使用排列组合来达到,往往需要静态或者动态显示一些不规则图形。采用这种方法需要自己支持wrap_content,padding也需要自己处理。
  • 继承viewGroup派生特殊的layout
    这种方式主要用于实现自定义布局,需要合适地处理ViewGroup的测量和布局两个过程,并同时处理子元素的测量和布局过程。
  • 继承特定的View
    这种方式比较常见,一般是扩展某种已有的View,比如TextView,这种方法比较容易实现,不需要自己支持wrap_content和padding等。
  • 继承特定的ViewGroup(比如LinearLayout)
    当某种效果看起来很像几种View组合在一起的时候,可以采用这种方法实现。采用这种方法不需要自己处理ViewGroup的测量和布局,需要注意本方法和方法2的区别,一般来说方法2能实现的效果方法4也都能实现,两者的主要差别在于方法2更接近View的底层。

参考:android view(4) 自定义组件


本文将对第四点:继承特定的ViewGroup进行学习与总结

  • 自定义view默认调用第二个构造方法,因此在第二个构造方法进行相关代码的处理
    原因:Android View 四个构造函数详解

  • 自定义属性,在attrs.xml文件下定义相关属性


    image.png
  • 在自定义view中获取自定义属性


    image.png

遇到问题

  • 在xml中使用自定义view无代码自动补全功能,包括android属性也不显示
    解决方法:将自定义view与其使用的地方放到同一个model中。原因:https://www.jianshu.com/p/77c18a66dfe3

你可能感兴趣的:(2019-12-18)