I am programming an app which generates all of its layout programmatically. I am looking to place an array of ImageView[]
depending on their index. But it looks like the LayoutParams
doesn't do anything since all the ImageView
s are being superposed. Here is the code I am using:
for (int i=0; i<tiles; i++){
Log.i("Setting up tile", "#" + i);
tileParams.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
tileParams.removeRule(RelativeLayout.ALIGN_PARENT_START);
tileParams.removeRule(RelativeLayout.BELOW);
tileParams.removeRule(RelativeLayout.RIGHT_OF);
if (((double)i/columns) == Math.round(i/columns)){
if (i == 0){
tileParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
tileParams.addRule(RelativeLayout.ALIGN_PARENT_START);
} else {
tileParams.addRule(RelativeLayout.BELOW, tileView[i-columns].getId());
tileParams.addRule(RelativeLayout.ALIGN_PARENT_START);
}
} else {
tileParams.addRule(RelativeLayout.RIGHT_OF, tileView[i-1].getId());
}
tileView[i].setLayoutParams(tileParams);
grid.addView(tileView[i]);
}
Here, "grid" is a RelativeLayout
and "tileParams" is a RelativeLayout.LayoutParams
.
PS: I know that the if
methods are used correctly at the required time, and the ImageView
s have their ids set using iv.setId(View.generateViewId())
.