我正在编写一个以编程方式生成所有布局的应用程序。我希望根据它们的索引放置一个ImageView[]
数组。但看起来LayoutParams
没有做任何事情,因为所有ImageView
都是叠加的。这是我正在使用的代码:
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]);
}
在这里,&#34;网格&#34;是RelativeLayout
和&#34; tileParams&#34;是RelativeLayout.LayoutParams
。
PS:我知道if
方法在所需时间正确使用,ImageView
使用iv.setId(View.generateViewId())
设置其ID。