单击自定义对话框中的按钮创建无限数量的EditText

时间:2015-03-26 09:02:44

标签: android

我必须在单击按钮的同时在自定义对话框中逐个创建编辑文本。

到目前为止,我在单击自定义对话框中的按钮时尝试并创建了一个编辑文本。

MainActivity.java:

下面我展示了迄今为止我尝试过的代码:

编辑:

import android.support.v7.app.ActionBarActivity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

    private Button button;
    private LinearLayout ll;
    EditText et;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.addBtn);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                final Dialog dialog = new Dialog(MainActivity.this);

                //setting custom layout to dialog
                dialog.setContentView(R.layout.custom_dialog_layout);
                dialog.setTitle("Add List");


                //adding button click event
                Button createEditText = (Button) dialog.findViewById(R.id.button);

                createEditText.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    //  dialog.dismiss();


                         et= new EditText(MainActivity.this);
                         FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                         params.gravity = Gravity.CENTER;
                        dialog.addContentView(et,params);
                       ((LinearLayout) dialog.findViewById(R.id.container)).addView(et);
                    }
                });
                dialog.show();
            }


        });
    }

}

custom_dialog_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

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

        <Button
            android:id="@+id/button"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/image"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="100dp"
            android:text="Next" />
    </LinearLayout>

</RelativeLayout>

我不知道如何在下面逐个创建无限数量的编辑文本。任何人都可以帮助我。谢谢。

1 个答案:

答案 0 :(得分:1)

我以前做过的方法是让一些包含布局(通常是linearlayout)并将我的视图添加到该容器中。粗糙的代码:

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

并在你的onclick听众

EditText edit = new EditText(MainActivity.this);
container.addView(edit);

修改

好的,在我最初的帖子中完全忽略了你的问题之后,我去检查了发生了什么。正在发生的事情(我认为)实际上它正在添加更多的edittexts,但它们都是彼此重叠的,所以它看起来并非如此。所以这就是你要做的事情,这与我上面写的内容有关:

在自定义对话框视图中,添加linearlayout容器

     <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/container"></LinearLayout>

在您的onclick中,您将编辑文本添加到linearlayout,而不是对话框视图

                    et= new EditText(TestActivity.this);
                    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
                    params.gravity = Gravity.CENTER;
                    ((LinearLayout) dialog.findViewById(R.id.container)).addView(et);

这应该有效。