2012-01-30 102 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