2

ボタンのクリックに基づいて、実行時にアクティビティに「テンプレート」レイアウトを動的に追加する必要があります。

以下のコード ブロックに示されているのは、私のレイアウトの簡略化されたバージョンです。HEADER C の内容 (つまり、BODY C1、BODY C2 ... BODY Cn) は、実行時に追加する必要があるコンポーネントです。それらはすべて同じ形式であり、相対レイアウトで別の xml ファイルに定義されています。このタスクを達成するにはどうすればよいですか? LayoutInflater を試しましたが、うまくいきませんでした。LayoutInflater は、膨張するために LinearLayout を必要としますか?

<SCROLLVIEW>
   <RELATIVE_LAYOUT>
      ____________
      HEADER A
         ____________
         BODY A
   </RELATIVE_LAYOUT>
   <RELATIVE_LAYOUT>
      ____________
      HEADER B
       ____________
    BODY B
</RELATIVE_LAYOUT>
<RELATIVE_LAYOUT>
____________
HEADER C
    ____________
    BODY C1
    ____________
    BODY C2
    .
    .
    .
    ____________
    BODY Cn
<RELATIVE_LAYOUT>
</SCROLLVIEW>

ありがとうございます。

4

4 に答える 4

1
/**rootView represent the RelativeLayout*/
View headerView = LayoutInflater.from(context).inflater(R.layout.header_view, rootView, false);
rootView.add(headerView);
于 2012-05-03T04:32:51.360 に答える
1

あなたはそのようにそれをすることができます:

general = (LinearLayout) findViewById(R.id.general_tab);  // get the id of the layout you wish to add your view to
TextView programs = new TextView(this); // create a new view/widget to add
programs.setText("Program(s): " + prgdisp);  // set the text 
general.addView(programs);  // add the new view/widget to the existing layout

編集

すでにxmlレイアウトがあるのを見逃しました。上記を次のように変更します。

general = (LinearLayout) findViewById(R.id.general_tab);  // get the id of the layout you wish to add your view to
View header = View.inflate(this, R.layout.class_name, null); // inflate your layout
general.addView(header);  // add the new view/widget to the existing layout
于 2012-05-03T04:34:03.410 に答える
1

使用する

View headerView = View.inflate(this, R.layout.class_name, null);

レイアウトを膨らませます。

于 2012-05-03T04:30:28.073 に答える
1
    LinearLayout Parent = (LinearLayout) findViewById(R.id.linearLayout);

    View child = getLayoutInflater().inflate(R.layout.main_new,null);
    Parent.addView(child);
于 2012-05-03T04:37:39.953 に答える