我有一个 XML 布局,其中包含一个带有未知数量 TableRows 的 TableLayout ......行数将在运行时建立,但我知道的是我想要两列......所以我有几个关于这个 :
- - 有没有办法将整个 TableLayout 设置为 2 列?
- 有没有办法以编程方式为(在运行时)创建的 TableRows 提供一个 ID,它将放置在 TableLayout 中,这样我以后可以从软件的其他部分引用它们?
我有一个 XML 布局,其中包含一个带有未知数量 TableRows 的 TableLayout ......行数将在运行时建立,但我知道的是我想要两列......所以我有几个关于这个 :
- 有没有办法以编程方式为(在运行时)创建的 TableRows 提供一个 ID,它将放置在 TableLayout 中,这样我以后可以从软件的其他部分引用它们?
您可以通过 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 中设置布局,使其更易于阅读/组织/编辑,并且您仍然可以通过编程方式控制表格中的列数和行数。您还可以存储对每个表行的引用以供以后使用。