如何在Android中动态添加表格中的字段?

ask*_*ask 1 android view dynamic

我需要用户输入图形坐标.问题是,我不知道有多少.所以我希望有一个"添加点"按钮,它将两个字段(用于x和y坐标)插入到新的表行中,以便用户添加更多坐标.

另外,当我想从中获取数据时,如何识别这些新字段?通常,我已经知道字段的ID并使用findViewById(R.id.ID_here)调用它们; 现在我该怎么做才能识别它们?

我正在将所有这些坐标写入一个文件中,所以如果有一种方法可以在不识别每个坐标的情况下编写它们,请提供帮助.

编辑:

我无法让edittext字段具有这些布局参数属性:

android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="numberDecimal"
Run Code Online (Sandbox Code Playgroud)

这是我的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);
Run Code Online (Sandbox Code Playgroud)

如果可以的话请帮忙.

Gen*_* S. 7

您可以像这样创建新行(或任何其他类型的View):

TableRow tr = new TableRow(myContext); // usually myContext is 'this'
Run Code Online (Sandbox Code Playgroud)

然后将tr添加到父视图中

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

LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tr.setLayoutParams(lp);
myTable.addView(tr);
Run Code Online (Sandbox Code Playgroud)

在添加layoutParams之前,您需要将它添加到视图中,因为所有视图必须至少指定其布局宽度和布局高度.

如果你需要在你的行中添加子项(显然你会,除此之外还有什么用处)你只需要重复这个过程,除非你现在创建一个EditText.一旦你这样做,你就自动创建了它,因为你创建了它!:)

我不清楚你的问题的最后部分是什么意思,你把它们写到文件中.请详细说明.

哦,欢迎来到Stack ...如果你发现答案有用,不要忘记向上投票和/或将它们标记为正确.