LayoutParams.addRule如何工作?

时间:2012-11-21 08:19:55

标签: android relativelayout layoutparams

我正在构建一个应用程序,它会在相对布局中添加视图,直到停止为止。 我的问题是RelativeLayout.LayoutParams.addRule是如何工作的?如果我继续调用addRule,这会创建一个不断增长的列表,还是addRule检查规则是否已经存在?以下代码真的是必要的吗?我可以只使用addRule,如果已经存在,这将不会创建重复的条目吗?

由于

    int[] rules = this.position[0].params.getRules();
    boolean rule = false;

    switch(index){
    case 0:

        for(int i = 0; i < rules.length; i++){
            if(rules[i]==RelativeLayout.RIGHT_OF)
                rule = true;
        }

        if(!rule){
            this.position[0].params.addRule(RelativeLayout.RIGHT_OF);
        }

        break;
    case 1:

        for(int i = 0; i < rules.length; i++){
            if(rules[i]==RelativeLayout.LEFT_OF)
                rule = true;
        }

        if(!rule){
            this.position[1].params.addRule(RelativeLayout.LEFT_OF);
        }

        break;
    case 2:

        for(int i = 0; i < rules.length; i++){
            if(rules[i]==RelativeLayout.ABOVE)
                rule = true;
        }

        if(!rule){
            this.position[2].params.addRule(RelativeLayout.ABOVE);
        }

        break;
    case 3:

        for(int i = 0; i < rules.length; i++){
            if(rules[i]==RelativeLayout.BELOW)
                rule = true;
        }

        if(!rule){
            this.position[3].params.addRule(RelativeLayout.BELOW);
        }

        break;
    }

1 个答案:

答案 0 :(得分:1)

通过查看RelativeLayout.LayoutParams类的代码,您可以看到规则存储在int数组中,其中规则是索引,因此规则只会添加一次,无论如何很多时候你打电话给addRule(最后一次通话都会计算在内)。