我正在尝试以编程方式填充TableView,以便有10个TableRows包含4个ImageView。但是,当我尝试将ImageView添加到动态生成的TableRows时,应用程序中没有任何内容。
我还需要将每个ImageView存储在一个数组中以供以后访问,或者至少为所述数组中的每个ImageView存储某种唯一ID。
我的代码如下(在我的MainActivity中):
TableView table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
for(int i = 0; i < 40; i += 4)
{
TableRow row = new TableRow(this);
row.SetGravity(GravityFlags.Center);
for (short j = 0; j < 4; j++)
{
ImageView cell = new ImageView(this);
cell.LayoutParameters = new ViewGroup.LayoutParams(75, 75);
grid[i + j] = cell
row.AddView(cell);
}
table.AddView(row);
}
答案 0 :(得分:1)
您的代码中存在两个问题,这两个问题源于TableRow
中的单元格具有关于其宽度和高度的唯一规则。来自文档:
TableRow
的孩子不需要在XML文件中指定layout_width
和layout_height
属性。TableRow
始终将这些值分别强制为ViewGroup+LayoutParams.MatchParent
和ViewGroup+LayoutParams.WrapContent
。
即使它在讨论XML布局,对于在代码中创建的布局也是如此。
首先,您需要一些东西来定义ImageView
单元格的高度。通常,您使用SetImageResource
或类似内容来确保定义了图片视图的src
属性(注意:不背景)。
其次,删除这一行:
cell.LayoutParameters = new ViewGroup.LayoutParams(75, 75);
在这两个更改之后,您的代码应该可以正常工作。