2012-01-30 92 views
1

我需要用戶輸入圖形座標。問題是,我不知道有多少。所以我想要一個「添加點」按鈕,它將兩個字段(用於x和y座標)插入到一個新的表格行中,供用戶添加更多的座標。如何在Android中動態添加表格中的字段?

另外,當我想從他們那裏獲取數據時,如何識別這些新字段?通常,我已經知道該字段的ID並使用findViewById(R.id.ID_here)來調用它們;現在我該怎麼做才能識別它們?

我正在將所有這些座標寫入文件,所以如果有一種方法可以在不識別每個座標的情況下編寫它們,請幫助。

編輯:

我不能得到的EditText字段有這些佈局參數屬性:

android:layout_width="0px" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:inputType="numberDecimal" 

下面是同我的Java代碼:

  TableLayout table = (TableLayout) findViewById(R.id.TableLayout1); 

      TableRow tr = new TableRow(this); 
      LinearLayout.LayoutParams trparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
      tr.setLayoutParams(trparams); 

      cg[i] = new EditText(this); 
      weight[i] = new EditText(this); 
      LinearLayout.LayoutParams fieldparams = new LinearLayout.LayoutParams(100, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); 
      cg[i].setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); 
      weight[i].setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); 
      cg[i].setLayoutParams(fieldparams); 
      weight[i].setLayoutParams(fieldparams); 

      tr.addView(cg[i]); 
      tr.addView(weight[i]); 

      table.addView(tr); 

請幫助,如果您可以。

回答

7

您可以創建新的行(或任何其他類型的視圖)所示:

TableRow tr = new TableRow(myContext); // usually myContext is 'this' 

然後添加在TR到任何父視圖是

TableLayout myTable = findViewById(R.id.TableLayout1); 

LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
tr.setLayoutParams(lp); 
myTable.addView(tr); 

你需要在添加layout之前將layoutParams添加到視圖,因爲所有視圖必須至少指定其佈局寬度和佈局高度。

如果你需要添加孩子到你的行(顯然你會,它有什麼用處),你只需重複這個過程,除非你現在創建了一個EditText。一旦你這樣做了,自動創建它就會自動引用它! :)

我不清楚你的問題的最後部分是什麼意思,你在哪裏寫他們的文件。請詳細說明。

哦,歡迎來到Stack ...如果你找到有用的答案,不要忘記對它們進行投票和/或標記爲正確的。

+0

謝謝。我面臨的一個問題是:如果我嘗試爲edittext框設置佈局參數,則它們不會在單擊按鈕時顯示。我無法弄清楚爲什麼。我想edittext字段有這些參數:android:layout_width =「0px」 android:layout_width =「wrap_content」 android:layout_weight =「1」 android:inputType =「numberDecimal」如果他們的layout_width = 0px請幫助 – ask 2012-01-30 15:04:39

+0

將不可見! – 2012-01-30 15:53:58

+0

謝謝。我找到了我正在尋找的答案。問題在於我使用LinearLayout而不是TableRowLayout作爲佈局參數。 – ask 2012-02-01 05:46:22