sloop

Results 122 comments of sloop

看原理篇函数调用流程,有图。 ![](http://ww2.sinaimg.cn/large/005Xtdi2jw1f88i0q8uozj30nm0kqwhm.jpg) 如果ViewGroup不拦截,那么只有ChildView不消费,ViewGroup才会响应。

nextContour() 一段一段的测量,加起来就是总长度。

可以的,然后在自定义的Group中填充这个布局就行了。例如: ``` java public class TitleBar extends ConstraintLayout { private View mGroup; public TitleBar(Context context) { this(context, null); } public TitleBar(Context context, AttributeSet attrs) { this(context, attrs, 0); } public...

因为这个系列目前只更新了大约一半的内容,因为刚工作,时间不足暂时停更了一年,最近可能会恢复更新。

我可能没有理解你说的这个内容的应用场景。 如果是自己自定义View,测量阶段就可以拿到屏幕宽高、最大可用宽度,padding 等数值,根据这些数值自然就可以计算出所需的尺寸信息,然后直接通过相关的方法应用该宽度就可以了。没有必要计算出来后存储起来再拿来使用。 如果是官方控件的属性,定义为 wrap_content ,设置了 margin 后,它的最大宽度自然就被限制了。 如果是第三方控件,定义为 wrap_content ,设置了 margin 后,它的显示的最大宽度超出了可以用区域,说明这个控件本身就存在问题,没有按照官方的标准来执行,是控件自身的问题,建议自己进行修改调整,或者换一个其他的控件来代替,

![](http://ww1.sinaimg.cn/large/005Xtdi2gy1frvq3jt1vzj310o0fk4hm.jpg) 也就是说内容区域最大如红框所示的意思吧。 一般来说,1、2、3 都是设置的具体 dp 数值,那么 1 + 2 + 3 在最开始就是已知的,那么设置具体内容区域(蓝框所示)的时候直接设置 marginRight 的数值为 1 + 2 +3 的 dp 数值就可以了。

如果上层View是按照规范来的,是这样的。

MPERSP_0、MPERSP_1 分别表示X、Y方向上的透视,具体计算和齐次坐标系相关,可以自己看一下相关的内容。