自定义View主要分为四种:
(1)继承View重写onDraw方法
从该方法可以看出,view的宽高由specSize决定。直接继承View的自定义控件需要重写onMeasure方法并设置wrap_content时的自身大小,否则在布局中使用wrap_content就相当于使用match_parent。如果在布局中使用specSize,View的specSize是parentSize,也就是父容器当前剩余的控件大小,就和match_parent一致。
解决方法:
为自定义View设置属性
步骤一:
步骤二:
步骤三:
(2)继承ViewGroup派生特殊的Layout
(3)继承特定的View(比如TextView)
(4)继承特定的ViewGroup(比如LinearLayout)