0

ViewGroup次のように、a をオーバーライドして複合ビューを作成しています。

public class CompositeView extends RelativeLayout

高さを知る必要があるため、測定値が設定された後 (つまり、onMeasure が呼び出された後)、1 回限りの初期化を実行する必要があります。

onAttachedToWindowをオーバーライドすることを考えていましたが、ドキュメントには次のように記載されています。

onMeasure(int, int) の前後を含め、最初の onDraw の前であればいつでも呼び出すことができます。

他にどのようなオプションがありますか?

ありがとう

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
            ...

このメソッドは、レイアウトが終了した後に 1 回呼び出されます。この質問は、いくつかの追加の詳細を提供します。

于 2012-04-25T13:35:14.490 に答える