I am currently playing around a bit with code generated Layouts. There I recogniced a problem in this part of code:
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); } Especially this line seems to cause the problem:
i.setLayoutParams(new LayoutParams(dp_x, dp_x)); When this line is commented out everything is displayed correctly. But as soon as I uncomment it not a single one of the ImageViews is displayed. I looked into debugging and every value seems to be added correctly to the ImageView. Any Idea, what causes this error?
Another thing is - I know DisplayMetrics and their width/height are discouraged to use. Here I use it to scale the ImageViews in dependence to the display. Can I achieve this in another way, too?
LayoutParams(the ones of the parent,TableRowin your case) instead of justLayoutParams.