在TableLayout中以编程方式设置列数

时间:2010-04-28 13:48:34

标签: android tablelayout

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

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

- 有没有一种方法可以为(在运行时)创建的TableRows提供一个id,它将放在TableLayout中,所以我可以稍后从软件的其他部分引用它们?

1 个答案:

答案 0 :(得分:5)

您可以通过XML部件和LayoutInflater构建表行。假设您将此作为table_cell.xml:

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

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

<TableRow />

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

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设置布局,使其更易于阅读/组织/编辑,并且您仍然可以通过编程控制表中的列数和行数。您还可以存储对每个表行的引用以供以后使用。