在运行时将Layouts动态插入到活动中

时间:2012-05-03 04:23:46

标签: android xml layout

我需要在运行时根据点击按钮动态地为我的活动添加“模板”布局。

下面的代码块中显示的是我的布局的简化版本。 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 个答案:

答案 0 :(得分:1)

使用

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

夸大你的布局。

答案 1 :(得分:1)

/**rootView represent the RelativeLayout*/
View headerView = LayoutInflater.from(context).inflater(R.layout.header_view, rootView, false);
rootView.add(headerView);

答案 2 :(得分: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

答案 3 :(得分:1)

    LinearLayout Parent = (LinearLayout) findViewById(R.id.linearLayout);

    View child = getLayoutInflater().inflate(R.layout.main_new,null);
    Parent.addView(child);