我目前正在玩一些代码生成的布局。我在这部分代码中发现了一个问题:
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int dp_x = (dm.widthPixels - 32) / 10;
for(int x = 0; x < 9; x++) {
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
for(int y = 0; y < 9; y++) {
ImageView i = new ImageView(this);
i.setClickable(true);
i.setLayoutParams(new LayoutParams(dp_x, dp_x));
i.setScaleType(ScaleType.FIT_XY);
i.setImageDrawable(getResources().getDrawable(R.drawable.i0));
iv[x][y] = i;
tr.addView(iv[x][y]);
}
fieldLayout.addView(tr);
}
尤其是这条线似乎导致了问题:
i.setLayoutParams(new LayoutParams(dp_x, dp_x));
当这一行被注释掉时,一切都会正确显示。但是,一旦我取消注释它,就不会显示任何一个 ImageView。我查看了调试,每个值似乎都正确添加到 ImageView。任何想法,是什么导致这个错误?
另一件事是 - 我知道 DisplayMetrics 和它们的宽度/高度不鼓励使用。在这里,我使用它来根据显示缩放 ImageView。我也可以通过其他方式实现这一目标吗?