【问题标题】:Generate a XML layout file dynamically动态生成 XML 布局文件
【发布时间】:2015-01-12 20:39:13
【问题描述】:

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

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字段列表和一个唯一的按钮,用于触发将数据保存在SQLite数据库中。

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

任何人都知道这是否真的可能以及如何做到?

【问题讨论】:

    标签: android xml forms layout android-activity


    【解决方案1】:

    您不能动态创建和加载 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);
    

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

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

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

    【讨论】:

    • 你好@Rarw,是否可以通过在gradle文件中编写一些脚本或任何东西(可能是groovy脚本)或任何东西?如果您对此有所了解,请帮助我。
    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 2019-12-19
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多