我正在通过覆盖 a 来编写复合视图ViewGroup
,如下所示:
public class CompositeView extends RelativeLayout
我需要在设置测量值后执行一些一次性初始化(即 onMeasure 已被调用),因为我需要知道高度。
我正在考虑覆盖onAttachedToWindow,但文档提到:
它可以在第一个 onDraw 之前的任何时间被调用——包括在 onMeasure(int, int) 之前或之后。
我还有什么其他选择?
谢谢
我正在通过覆盖 a 来编写复合视图ViewGroup
,如下所示:
public class CompositeView extends RelativeLayout
我需要在设置测量值后执行一些一次性初始化(即 onMeasure 已被调用),因为我需要知道高度。
我正在考虑覆盖onAttachedToWindow,但文档提到:
它可以在第一个 onDraw 之前的任何时间被调用——包括在 onMeasure(int, int) 之前或之后。
我还有什么其他选择?
谢谢
我更喜欢在我的 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
...
此方法在布局完成后调用一次。这个问题提供了一些额外的细节。