欢迎光临散文网 会员登陆 & 注册

DEVLOG 9.10(二) 关于自定义View的一些问题总结:

2021-09-10 20:08 作者:房顶上的铝皮水塔  | 我要投稿

问题记录:

  1. View支持wrap_content: 

    自定义View如果继承View时,如果不去实现onMeasure处理wrap_content,则当这个View设置了wrap_content时,View的长度和父容器中可用长度相同,而且测量模式为AT_MOST。推导

    1. View#onMeasure会调用View#getDefaultSize,里面会指定View的specSize 为传过来的MeasureSpec。

    2. 这个MeasureSpec由ViewGroup决定。通过ViewGroup#getChildMeasureSpec可以推导出一张表,可以得出结论。


1.1 . 怎么处理?

思路:在onMeasure中获取Image(假设想wrap_content bitmap)的宽高,然后检查width和height的LayoutParams属性,如果是wrap_content,设置为从bitmap中拿到的大小;否则设置为传入的测量的大小。


可以参考Android开发艺术探索+这篇博客

https://blog.csdn.net/carson_ho/article/details/62037760


2. 完成你的View的时候实现padding

padding表示【填料】和margin不同,通俗的理解上margin是外边距,padding是内边距。继承自View和ViewGroup的自定义空间肯定没有实现padding的处理。毕竟实现MeasureSpec的时候计算了LayoutParams,里面就有Margin计算。这个实现也不难,View#getPaddingxxxx获取padding,减小width和height就行【因为内部被填充了,大小减小了】。


今天就这样~


DEVLOG 9.10(二) 关于自定义View的一些问题总结:的评论 (共 条)

分享到微博请遵守国家法律