编辑**除了我的主要问题外,我想出了自己的答案如下:
TableLayout tableLayout = new TableLayout(this);
TableRow row = new TableRow(getApplicationContext());
row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
// inner for loop
for (int j = 1; j <= courseHoleCount; j++) {
**TextView tv = new TextView(getApplicationContext());
tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT));**
tv.setBackgroundResource(R.drawable.cell_shape);
tv.setTextSize(30);
tv.setPadding(5, 5, 5, 5);
tv.setText(String.valueOf(players[i-1].getScore()[j-1]));// (-1) because j = 1 and not 0.
row.addView(tv);
}
tableLayout.addView(row);
linearLayout.addView(tableLayout);
在上面的代码片段中,这是做什么以及为什么/ TableRow.Layout params被添加到文本视图布局参数中?
tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT));
答案 0 :(得分:0)
TextView
的父级是TableRow
,因此TextView
的布局参数应为TableRow.LayoutParams
类型。
这与指定:
完全相同<TableRow ...>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TableRow>
如果将TextView
添加到其他ViewGroup
LinearLayout
,则需要设置LinearLayout.LayoutParams
。
答案 1 :(得分:0)
TableRow.LayoutParams
,因为tv
是row
的孩子,TableRow
。
如果您查看Android API reference,则说明
设置与此视图关联的布局参数。这些供应参数提供给此视图的父级,指定应如何排列。
LayoutParams
构造函数的两个参数用于设置tv
的宽度和高度。由于宽度和高度都设置为WRAP_CONTENT
,因此tv
will be big enough to enclose its content (plus padding)的大小。