我正在通过覆盖ViewGroup
来编写复合视图,如下所示:
public class CompositeView extends RelativeLayout
我需要在设置测量后执行一次初始化(即调用onMeasure),因为我需要知道高度。
我在考虑覆盖onAttachedToWindow,但文档提到:
可以在第一次onDraw之前的任何时间调用它 - 包括onMeasure(int,int)之前或之后。
我还有其他选择吗?
由于
答案 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提供了一些额外的细节。