Android 为什么';我的编程设置相对布局位置是否正常工作?
我想要一个3x3的视图网格,如下所示:Android 为什么';我的编程设置相对布局位置是否正常工作?,android,android-relativelayout,Android,Android Relativelayout,我想要一个3x3的视图网格,如下所示: 0 1 2 3 4 5 6 7 8 因此,我使用了以下代码: for (int i=0; i<9; i++) { View ns = (View)View.inflate(ctx, R.layout.view_layout, null); viewArray.add(ns); ns.setId(i); RelativeLayout.LayoutParams lp = new Rela
0 1 2
3 4 5
6 7 8
因此,我使用了以下代码:
for (int i=0; i<9; i++) {
View ns = (View)View.inflate(ctx, R.layout.view_layout, null);
viewArray.add(ns);
ns.setId(i);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (i>2) {
if (i<6) {
lp.addRule(RelativeLayout.BELOW, viewArray.get(1).getId());
}
else {
lp.addRule(RelativeLayout.BELOW, viewArray.get(3).getId());
}
}
if (i%3!=0) {
lp.addRule(RelativeLayout.RIGHT_OF, viewArray.get(viewArray.size()-2).getId());
}
//This shouldn't be necessary, but it is
if (i==3) {
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.RIGHT_OF, viewArray.get(3).getId());
viewArray.get(1).setLayoutParams(lp1);
}
addView(ns, lp);
}
for(int i=0;i2){
如果值为0的(iAnid
对视图无效。请将迭代器更改为从1开始,并相应地调整代码。非常好,谢谢。我刚刚意识到这对您来说非常容易,无需更改迭代器范围,只需将setId(I)
更改为setId(I+1)
,它应该可以工作。是的,这就是我所做的。