我正在尝试按下按钮来创建用户可以输入信息的文本字段。这样他们只能创建他们想要的那么多行。另外,有没有办法一次创建多个字段? 所以,它最终将成为这样的东西:
“添加事件”(屏幕的其余部分为空白,直到他们点击该按钮)
文本字段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”。
答案 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);