[英]Create dynamically text fields
我試圖讓我的按鈕創建一個文本字段,用戶可以在其中輸入信息。 通過這種方式,他們只能創建盡可能多的行。 另外,有沒有辦法一次創建多個字段? 所以,它最終會是這樣的:
“添加事件”(屏幕的其余部分是空白的,直到他們單擊該按鈕)
文本框 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”。
假設您有以下布局 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.