单击按钮时如何动态添加更多字段

时间:2012-06-22 06:33:18

标签: android android-layout

我正在尝试创建一个表单,可以在用户点击按钮时添加其他字段,即包含LinearLayout和2 TextView的A EditText。与联系人应用类似。任何人都可以推荐教程或示例吗?

2 个答案:

答案 0 :(得分:2)

创建一个包含所需动态视图的线性布局,创建要动态添加的布局文件,创建一个类以将该布局扩展到您的活动,并使用其对象获取视图并将其添加到该框中(您想要动态视图的布局)。你可以这样。

public class BoxView {
    private Context context;
    private TextView tv;
    private EditText edt;
    private Button btn;
    private View v;

    public BoxView(Context context) {

        // TODO Auto-generated constructor stub
        this.context= context;
        init();
    }

    private void init() {
        // TODO Auto-generated method stub
        LayoutInflater inflator= LayoutInflater.from(context);
         this.v= inflator.inflate(R.layout.sample_layout, null);

        this.tv=(TextView)v.findViewById(R.id.textView1);
        this.edt=(EditText)v.findViewById(R.id.editText1);
        this.btn=(Button)v.findViewById(R.id.button1);

    }

    public View getView(){
        return v;
    }
    public void setTv(TextView tv) {
        this.tv = tv;
    }
    public TextView getTv() {
        return tv;
    }
    public void setEdt(EditText edt) {
        this.edt = edt;
    }
    public EditText getEdt() {
        return edt;
    }
    public void setBtn(Button btn) {
        this.btn = btn;
    }
    public Button getBtn() {
        return btn;
    }


}

在您的活动中,您可以这样做:

 LinearLayout layout=(LinearLayout)findviewbyId(R.id.layout1);
 BoxView box=new BoxView(context);
 layout.addView(box.getView);

答案 1 :(得分:1)

您可以通过将新组件添加到xml中的父布局定义来添加新组件 (您可以通过为其提供ID来引用该布局,并使用LinearLayout linearLayout = findViewById(R.id.idOfLayout);在此LinearLayout中获取该父布局,并通过动态创建它来添加其他布局,从而在您的活动中访问该布局/ p>

以下是一些链接,可帮助您了解动态添加和删除Android中的组件

Build dynamic form through code Link.. LinearLayout adding removing ElementsLink..