0

我正在通过覆盖 a 来编写复合视图ViewGroup,如下所示:

public class CompositeView extends RelativeLayout

我需要在设置测量值后执行一些一次性初始化(即 onMeasure 已被调用),因为我需要知道高度。

我正在考虑覆盖onAttachedToWindow,但文档提到:

它可以在第一个 onDraw 之前的任何时间被调用——包括在 onMeasure(int, int) 之前或之后。

我还有什么其他选择?

谢谢

4

1 回答 1

1

我更喜欢在我的 CustomViews 中使用 onSizeChanged:

@Override
protected void onSizeChanged(final int w, final int h, final int oldw, final int oldh) {
    boolean changed = false;
    changed |= w != oldw;
    changed |= h != oldh;
    changed &= w > 0;
    changed &= h > 0;
    if (changed) {
            //do initialization stuff here
            ...

此方法在布局完成后调用一次。这个问题提供了一些额外的细节。

于 2012-04-25T13:35:14.490 回答