0

タブレット用のAndroid3.0アプリケーションがあります。このアプリケーションでは、レイアウトに複数のViewsGroupを挿入する必要があり、これらの各ViewsGroupには複数のビューがあります。アクティビティのonCreateコードは次のとおりです。

    setContentView(R.layout.main);
    params = new LayoutParams(500, 600);
    ViewGroup v1 = new Bar(this);
    this.addView(v1,params);
    ViewGroup v2 = new Bar(this);
    this.addView(v2,params);

このBarクラスはViewGroupを拡張し、その中にいくつかのビューがあります。問題は、最初のViewGroup(v1)のビューのみが画面に表示されていることです。しかし、たとえば2番目の背景を設定すると、結果が表示されるため、両方のViewGroupがコンテンツに追加されていることがわかります。ただし、2番目のViewGroup内にあるビューは画面に描画されていません。最初にv2の順序を変更しようとしましたが、v2内のすべてのビューが描画されましたが、v1内のビューは描画されませんでした。Barクラス内のonLayoutメソッドと関係があると思います。これを以下に示します。

@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
    for(int nI = 0; nI < this.getChildCount(); nI++){
        this.getChildAt(nI).layout(arg1, arg2, arg3, arg4);
    }

}

この方法に問題はありますか?

ちなみに私はLinearLayoutを使用しています。

<LinearLayout android:background="#C6D7D2" android:orientation="horizontal" android:id="@+id/container" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout>
4

1 に答える 1

0

onMeasure()もオーバーライドする必要があります。そこでsetMeasuredDimension(w、h)を設定する必要があります。wとhは、すべての子の寸法を追加した後に取得するバーの高さと幅です。

于 2011-08-25T11:06:29.587 に答える