我不确定onAttachedToWindow
的使用情况。
我的问题基本上是关于documentation。 提及:
[...]可以在第一次onDraw之前的任何时间调用它 - 包括onMeasure(int,int)之前或之后
我该知道什么:
在onMeasure
之前调用它以及何时调用它。
背后的故事:
我在OnGlobalLayoutListener
中添加了onAttachedToWindow
,并在onDetachedFromWindow
中将其删除。因为在将视图添加到窗口时,我以某种方式处理布局。
但我担心第一个onGlobalLayout调用会丢失,如果还没有添加Listener。 (因为onMeasure通常在布局期间发生)
如果有人对我的问题采取了更好的方法,请随时给我一个提示。
答案 0 :(得分:3)
文档是正确的,您不应该依赖onWindowAttach/Detach
与onMeasure
或onLayout
传递同步。
如果您的View
课程对父级层次结构更改感兴趣,我会反对这样的设计。父UI应该通知子视图的层次结构更改。因此,OnGlobalLayoutListener
最好由封闭的UI类使用。
此外,View
类有onSizeChanged()
,您可以覆盖它以检测何时进行测量。