动态生成XML布局文件

时间:2014-11-15 15:05:19

标签: android xml forms layout android-activity

在我目前的春季项目中,我的一个活动应该是用户可以插入新实体的表单。活动的代码是这样的:

public class FormNewItemActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.form_new_item_view);

    Intent intent = getIntent();
    Dao<?> dao = intent.getStringExtra(HelloActivity.EXTRA_MESSAGE);
  }
}

布局文件应该有一个EditText字段列表和一个唯一的Button,用于触发在SQLite数据库中保存数据。

我想知道它是否可能,给出一个带有实体类字段名称的字符串列表,动态生成一个xml布局文件,每个字段有一个EditText。

任何人都知道这是否真的可行,怎么办?

1 个答案:

答案 0 :(得分:2)

您无法动态创建和加载XML布局文件。但是,您可以做的是以编程方式动态创建布局,这将产生相同的效果。此方法通过在运行时创建和添加视图到作为容器的布局(例如空LinearLayout)来工作。在您的示例中,您将使R.layout.form_new_item_view包含空LinearLayout

<LinearLayout
    android:id="@+id/container_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"/>

然后,您将在onCreate中找到容器布局

    LinearLayout container = (LinearLayout) findViewById(R.id.container_layout);

然后根据需要从字段名称列表中创建并添加TextViewEditText

    for(String title: listOfTitles){
        TextView field = new TextView(this);
        field.setText(title);
        container.addView(field); 
    } 

要进一步自定义布局,您可以为添加的每个视图设置LayoutParams以控制边距和其他参数。