0

ビューをこのViewGroupにドラッグアンドドロップすると、エディターはlayout_widthとlayout_heightを子に設定できないと言うことを除いて、ちょっと機能するカスタムViewGroupを作成しました。何が原因でしょうか?

onLayout と onMeasure の 2 つのメソッドのみをオーバーライドしました。子供の測定方法をまだ理解していないため、onMeasure で間違いを犯したと思います。

とにかく、ここに私のonMeasureがあります:

@Override
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(
            MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.AT_MOST);
    final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
            MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.AT_MOST);

    int count = getChildCount();

    for (int i = 0; i < count; ++i) {
        View child = getChildAt(i);

        child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
    }

    setMeasuredDimension(mWidth, mHeight);
}

では、viewgroup の子に layout_with および layout_height パラメータを取得させるにはどうすればよいでしょうか?

PS ViewGroup の幅と高さが固定されていることは知っていますが、それが私が望む方法です。

4

1 に答える 1

1

MeasureSpec.EXACTLY を使用する必要があったことがわかりました。それが存在することを知りませんでした。

child.measure(MeasureSpec.EXACTLY | childWidth, MeasureSpec.EXACTLY | childHeight);

PS誰かがより良いコメント付きの回答を持っている場合-私はそれを回答として受け入れます。もう少し情報を読みたいです;)

于 2012-08-14T10:02:29.427 に答える