自定义View中onLayout方法被执行两次是怎么回事?
关注:93 答案:2 手机版
解决时间 2021-01-11 03:25
- 提问者网友:我微笑着泪滴
- 2021-01-10 10:28
我自定义了一个ViewGroup,并重写了onLayout()方法,当我调试时发现:每次应用程序初始化这个view时都要调用两次onLayout()方法,不同的是:初始化view第一次调用时 onLayout(boolean changed, int l, int t, int r, int b)中的第一个参数 changed为true;第二次调用时 changed为false;这是怎么回事?大家讲讲,求高手解答。ps:同时我发现onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法也会被执行两次,这是怎么回事?
最佳答案
- 二级知识专家网友:烈酒℃灼言EL
- 2021-01-10 11:59
只是记得当measure时父View会让各个子View Measure 自己的大小,然后如果父View觉得太大或太小即不合适的话会要求子View重新MeasureView.MeasureSpec这个类好像跟布局也有关
全部回答
- 1楼网友:落日海湾
- 2021-01-10 12:27
这个onlayout是由父view触发当前view layout方法的时候, 的一个callback. 当布局里面我任何一个view的frame改变了, 都会触发最上层的view的onlayout, 然后一级一级的向下传递.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!