Android在什么时候调用OnLayout?

3

我正在开发一个自定义的View,它继承自ViewGroup。这意味着我需要实现onLayout方法。我曾经认为这个方法在视图显示在屏幕上时调用,但我想这不是正确的。

能否解释一下onLayout方法何时调用以及我需要在该方法中实现什么?

这让我崩溃了,因为我在Android SDK中看到一个AdapterView在其onLayout实现中,这让我感到困惑,因为该方法中没有一个参数被使用。

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    mLayoutHeight = getHeight();
}
1个回答

2
这个方法做的是 Javadoc 中所说的:
在布局时调用,该视图应为每个子视图分配大小和位置。具有子视图的派生类应覆盖此方法并在每个子视图上调用布局。
换句话说,遍历您的视图的子项,并设置它们的位置和大小。在您扩展的 ViewGroup.java 的参考文档中,有一个不错的示例example
还在 Android 开发者网站上有一个 training,可以帮助您创建自定义视图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接