我已经创建了很多像这段代码的图像按钮:
TableRow tr = new TableRow(this);
if (db != null) {
if (db.moveToFirst()) {
do {
ImageButton button = new ImageButton(this);
int ID = Integer.parseInt(db.getString(db.getColumnIndex("ID")));
int resource = getResources().getIdentifier("unit" + ID, "drawable", getPackageName());
System.out.println("unit" + ID + ":" + resource);
button.setImageResource(resource);
button.setOnClickListener(MainActivity.this);
tr.addView(button);
button.getLayoutParams().height = 250;
button.getLayoutParams().width = 250;
button.setScaleType(ImageView.ScaleType.FIT_CENTER);
//button.setLayoutParams(tableRowParams);
rowcount++;
if (rowcount % 5 == 0) {
layout.addView(tr);
tr = new TableRow(this);
}
} while (db.moveToNext());
}
}
我找到了代码:
TableLayout.LayoutParams tableRowParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT);
tableRowParams.setMargins(0, 0, 0, 0);
并在do while时按下按钮。
button.setLayoutParams(tableRowParams);
它将显示错误消息“android.widget.TableLayout $ LayoutParams无法强制转换为android.widget.TableRow $ LayoutParams”
答案 0 :(得分:0)
将TableLayout.LayoutParams
替换为TableRow.LayoutParams
:
TableRow.LayoutParams tableRowParams =
new TableRow.LayoutParams(
TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT);
tableRowParams.setMargins(0, 0, 0, 0);
答案 1 :(得分:0)
您使用的LayoutParams
类型取决于视图的容器,而不是视图本身。因此,由于您的按钮位于TableRow
内,因此您现在需要使用TableRow.LayoutParams
而不是TableLayout.LayoutParams
。
此外,您还要注意,如果您需要设置TableRow或Button的样式,而不是创建类的新实例并以此方式查看边距,则可以使用{{1来扩展XML布局这样你就可以在XML文件中设置边距。