6

我有一个 XML 布局,其中包含一个带有未知数量 TableRows 的 TableLayout ......行数将在运行时建立,但我知道的是我想要两列......所以我有几个关于这个 :

    - 有没有办法将整个 TableLayout 设置为 2 列?

- 有没有办法以编程方式为(在运行时)创建的 TableRows 提供一个 ID,它将放置在 TableLayout 中,这样我以后可以从软件的其他部分引用它们?

4

1 回答 1

5

您可以通过 XML 部件和 LayoutInflater 构建表格行。假设你有这个作为你的 table_cell.xml:

<TextView android:id="@+id/text"
    android:text="woot" />

这就像你的 table_row.xml (除非你对你的 TableRow 做了一些花哨的事情,你可能不需要把它放在它自己的 XML 文件中,而只是以编程方式创建它。结果将是相同的):

<TableRow />

假设您的 TableLayout 引用被称为“表”,您可以执行以下操作:

TableLayout table = (TableLayout)findViewById(R.id.table);
LayoutInflater inflater = getLayoutInflater();

for(int i = 0; i < 5; i++) {
    TableRow row = (TableRow)inflater.inflate(R.layout.table_row, table, false);
    View v = (View)inflater.inflate(R.layout.table_cell, row, false);
    row.addView(v);
    v = (View)inflater.inflate(R.layout.table_cell, row, false);
    row.addView(v);

    // you can store your reference to `row` here for later use
    table.addView(row);
}

使用这种技术,您仍然可以在 XML 中设置布局,使其更易于阅读/组织/编辑,并且您仍然可以通过编程方式控制表格中的列数和行数。您还可以存储对每个表行的引用以供以后使用。

于 2010-04-28T16:29:34.367 回答