Android 为什么';我的编程设置相对布局位置是否正常工作?

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

我想要一个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 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的(iAn
id
对视图无效。请将迭代器更改为从1开始,并相应地调整代码。非常好,谢谢。我刚刚意识到这对您来说非常容易,无需更改迭代器范围,只需将
setId(I)
更改为
setId(I+1)
,它应该可以工作。是的,这就是我所做的。