2013-01-21 34 views
2

我想用一个Buttonclick创建一些EditText字段,它们有自己的名字(eText1,eText2 ...) 例如有一个按钮+。用户可以点击该按钮来创建一个新的EditText字段。android - 用按钮创建EditText字段

+0

你在说什么语言和框架? – snurre

+0

因此创建它们,有什么问题? – Leonidos

+0

您是否预定义了EditTexts,或者用户是否可以按下无限按钮来创建大量的EditTexts? – stealthjong

回答

3

你给一点背景,但这段代码可能会进一步给你带来痘痘:

EditText et1, et2, et3; 

public void onCreate() { 
    et1 = (EditText)findViewById(R.id.et1); 
    et2 = (EditText)findViewById(R.id.et2); 
    et3 = (EditText)findViewById(R.id.et3); 
    et1.setVisibility(View.GONE); 
    et2.setVisibility(View.GONE); 
    et3.setVisibility(View.GONE); 
} 

public void clickHandlingMethod(View v) { 
    et1.setVisibility(View.VISIBLE); 
    et2.setVisibility(View.VISIBLE); 
    et3.setVisibility(View.VISIBLE); 
} 

,你只可以隐藏所有的EditTexts,当用户按下button,使它们可见。

编辑:看到您的评论,用户可能加起来高达100 EditTexts,你可能想要做出更动态的东西。试试这个,创建并添加一个在Button点击:

ScrollView container; // create a scrollView in which you can put all EditTexts 
static int totalEditTexts = 0; 

public void onCreate(Bundle bundle) { 
    super.onCreate(bundle); 
    container = (ScrollView) findViewById(R.id.scrollView); 
} 

public void clicked(View view) { 
    totalEditTexts++; 
    if (totalEditTexts > 100) 
     return; 
    EditText editText = new EditText(this); 
    //if you want to identify the created editTexts, set a tag, like below 
    editText.setTag("EditText" + totalEditTexts); 
    container.addView(editText); 
} 

EDIT2:全码:

public class ScrollStuff extends Activity { 
    LinearLayout containerLayout; 
    static int totalEditTexts = 0; 

    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.scroll); 
     containerLayout = (LinearLayout)findViewById(R.id.mlayout); 
    } 

    public void onBackPressed() { 
     totalEditTexts++; 
     if (totalEditTexts > 100) 
      return; 
     EditText editText = new EditText(this); 
     containerLayout.addView(editText); 
     editText.setGravity(Gravity.RIGHT); 
     LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) editText.getLayoutParams(); 
     layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT; 
     editText.setLayoutParams(layoutParams); 
     //if you want to identify the created editTexts, set a tag, like below 
     editText.setTag("EditText" + totalEditTexts); 

    } 
} 

XML:

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

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

</ScrollView> 

原谅我可怜的命名的选择,事实上,我点击事件使用onBackPressed(),我很匆忙。

+0

谢谢,我会尝试 –

+0

@Edu请参阅我的编辑。由于用户最多可以添加100个,因此动态方法更好。 – stealthjong

+0

可以在按钮上单击一次,但第二次崩溃: java.lang.IllegalStateException:ScrollView只能托管一个直接子对象 –