0

3 つの相対レイアウトがあり、これらのレイアウトをそれぞれ 3 回追加し、等しい画面スペースを共有する組み合わせである単一の setcontetntview を作成する必要があり、プログラムで行う必要があります。2 つの画面だけを追加する新しいレイアウトを作成することから始めました。

    RelativeLayout primaryLayout = new RelativeLayout(this);
    LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    RelativeLayout newLayout = (RelativeLayout)layoutInflater.inflate(R.layout.layout3, null, false);
    RelativeLayout newLayout1 = (RelativeLayout)layoutInflater.inflate(R.layout.layout4, null, false);
    primaryLayout.addView(newLayout);
    primaryLayout.addView(newLayout1);
    setContentView(primaryLayout);

これはlayout4のみを表示しています。また、同じレイアウトを再度追加すると、指定された子には既に親があるというエラーが表示されるため、最初に子の親で removeview() を呼び出す必要があります。助けてください!

4

2 に答える 2

0

addRuleビューを相互に設定するには、レイアウト パラメータを使用する必要があります。ビューの再追加に関する不満については、ビューの 2 つの独立したインスタンスを試すことができます。同じレイアウトになりますが、親はそれを知りません。

編集:

画面の半分を占めるようにするには、子ビューに割り当てるスペースを親ビューに伝える必要があります。

RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40);
childView.setLayoutParams(forChild);
于 2013-03-15T17:37:29.103 に答える
0

layout4 のみを表示する理由は、primaryLayout が相対レイアウトであるためです。そのレイアウトのどこに行くかを指定しない限り、すべてが左上隅に配置されます。そのため、すべてが互いに重なり合っています。

同じレイアウトを複数回追加することはできません。必要なバージョンごとに一度再膨張させ、結果を追加する必要があります。OOP に似ています。RelativeLayout はレイアウトのインスタンスであり、膨張すると新しいレイアウトがインスタンス化されます。

于 2013-03-15T17:39:02.317 に答える