动态创建文本字段

时间:2016-05-09 00:00:02

标签: java android android-edittext

我正在尝试按下按钮来创建用户可以输入信息的文本字段。这样他们只能创建他们想要的那么多行。另外,有没有办法一次创建多个字段? 所以,它最终将成为这样的东西:

“添加事件”(屏幕的其余部分为空白,直到他们点击该按钮)

文本字段1 /文本字段2 /文本字段3

(一旦按下那个按钮,当然没有下划线,只是一个例子)

所以他们可以提供他们想要的信息。如果他们想要另一行,他们会再次点击添加按钮。

我应该使用onClickListener吗?我很困惑如何让按钮为用户创建该字段。

public class BudgetScreen extends AppCompatActivity {

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

    Button addBillExpense = (Button) findViewById(R.id.addBillExpense);

    addBillExpense.setOnClickListener(new Button.OnClickListener() {
        public void onClick (View v) {

            TextView inputField = new TextView(BudgetScreen.this);

        }
    });
}

}

这就是我到目前为止所拥有的。我一直坚持这个热点。我知道我还没有使用过“inputField”。

1 个答案:

答案 0 :(得分:1)

假设您有以下布局xml:

<LinearLayout ...>
   <Button .../>
   <LinearLayout ...
    android:id="@+id/holder"
    android:orientation="vertical">

   </LinearLayout>
</LinearLayout>
按钮onClickListener中的

可以包含以下内容:

LinearLayout layout = (LinearLayout) findViewById(R.id.holder);
EditText et = new EditText(this);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
layout.addView(et,lp);

您可以更改LayoutParams以获得您喜欢的布局。

如果您想在一行中使用多个EditText,则可以执行以下操作:

    final int NUM_EDITTEXT_PER_ROW = 3;
    LinearLayout layout = (LinearLayout) findViewById(R.id.holder);
    Display display = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int width = display.getWidth()/NUM_EDITTEXT_PER_ROW;
    LinearLayout tempLayout = new LinearLayout(this);
    tempLayout.setOrientation(LinearLayout.HORIZONTAL);
    for(int i=0;i<NUM_EDITTEXT_PER_ROW;i++){
        EditText et = new EditText(this);
        LayoutParams lp = new LayoutParams(width,LayoutParams.WRAP_CONTENT);
        tempLayout.addView(et,lp);
    }
    layout.addView(tempLayout);