Android复合视图初始化

时间:2012-04-25 13:30:52

标签: android

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

public class CompositeView extends RelativeLayout

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

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

  

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

我还有其他选择吗?

由于

1 个答案:

答案 0 :(得分: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
            ...

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