【发布时间】:2011-01-24 15:17:54
【问题描述】:
我正在尝试扩展 TableLayout 类,以便该类自动填充行。我遇到的问题是我在自定义类中添加的行不显示。
例如。活动内:
private TextView getTableCell(String text) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
return tv;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DatasetTableLayout table = (DatasetTableLayout) findViewById(R.id.table);
TableRow tr = new TableRow(this);
tr.addView(getTableCell("activity1"));
tr.addView(getTableCell("activity2"));
tr.addView(getTableCell("activity3"));
table.addView(tr);
这成功地向表中添加了一行。但是,在我的自定义类中:
private TextView getTableCell(String text) {
TextView tv = new TextView(context);
tv.setText(text);
tv.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
return tv;
}
private void update() {
TableRow tr = new TableRow(context);
tr.addView(getTableCell("class1"));
tr.addView(getTableCell("class2"));
tr.addView(getTableCell("class3"));
addView(tr);
}
没有成功添加一行。好吧,它确实添加了一行,因为 getChildCount() 和 getChildAt() 确实返回了这一行 - 但它没有显示出来。
我错过了什么吗?
【问题讨论】:
-
我发现了问题。在 DatasetTableLayout.getTableCell()(DatasetTableLayout 扩展 TableLayout)中,调用 new LayoutParams() 创建了一个 android.widget.TableLayout.LayoutParams 对象,而我需要的是一个 android.widget.TableRow.LayoutParams。经验教训 - 不要依赖 Eclipse 的组织导入命令!!
-
它救了我的命。你说得对,任何 layoutparam 都不能在 tablelayout 上工作,但是 talberow.layoutparam
标签: android android-widget android-layout