在Android中动态创建EditText

时间:2014-06-05 09:35:58

标签: android-edittext dynamically-generated

我正在开发一个我需要创建多个应用程序的应用程序          动态EditText和Spinner。所以我开始寻找         解决方案,因为我没有权限使用隐形         XML文件中的属性。我搜索了很多,并得到了一些例子         仅限于 stackoverflow 。我关注它们并创建了这个程序。

       **MainActivity.java code** 

public class MainActivity extends Activity {

        RelativeLayout containerLayout;
        static int totalEditTexts = 0;
        Button button;
        Context context;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    containerLayout = (RelativeLayout)findViewById(R.id.relative1);
    button = (Button)findViewById(R.id.button1);

    button.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub

     totalEditTexts++;
     if (totalEditTexts > 100)
    return;
    EditText editText = new EditText(getBaseContext());
    containerLayout.addView(editText);
      editText.setGravity(Gravity.RIGHT);
     RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) editText.getLayoutParams();
      layoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT;
        layoutParams.setMargins(23, 34, 0, 0);
     // RelativeLayout.LayoutParams()
       editText.setLayoutParams(layoutParams);
    //if you want to identify the created editTexts, set a tag, like below
     editText.setTag("EditText" + totalEditTexts);
                }
            });

} }

当我运行此代码时,它会在单击按钮时创建EditText。但只有一次。我不知道之后发生了什么。是创建新的EditText还是重叠旧的EditText,否则它不会创建多个EditText。

enter image description here

任何人都可以向我解释我现在必须做些什么来解决这个问题。

2 个答案:

答案 0 :(得分:8)

我已经解决了我的问题,只需将 RelativeLayout 替换为 LinearLayout

答案 1 :(得分:5)

使用RelativeLayout并动态添加内容的问题是,如果您未设置视图的相对位置,则它会相互重叠。因此,当您单击并添加新视图时,将添加新视图,但它们会相互重叠。但是添加LinearLayout,视图可以在彼此下方看到,因为您可以将方向设置为垂直。