1

停止するまで相対レイアウトにビューを追加するアプリケーションを構築しています。私の質問は、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;
    }
4

1 に答える 1

1

クラスのコードをRelativeLayout.LayoutParams見ると、ルールがintインデックスである配列に格納されていることがわかります。したがって、何度呼び出してもルールは1回だけ追加されますaddRule(最後の呼び出しがカウントされます)。

于 2012-11-21T08:31:30.120 に答える