Ich baue eine Anwendung, die Ansichten hinzufügtzu einem relativen Layout bis zum Stoppen. Meine Frage ist, wie RelativeLayout.LayoutParams.addRule funktioniert. Wenn ich addRule ständig anrufe, wird dadurch eine ständig wachsende Liste erstellt, oder prüft addRule, ob bereits eine Regel vorhanden ist? Ist der folgende Code wirklich notwendig? Kann ich einfach addRule verwenden und wenn es bereits existiert, wird kein doppelter Eintrag erstellt?
Vielen Dank
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;
}
Antworten:
1 für die Antwort № 1Schauen Sie sich den Code für die RelativeLayout.LayoutParams
Klasse können Sie sehen, dass die Regeln in einer gespeichert sind int
Array, bei dem die Regeln die Indizes sind, werden die Regeln nur einmal hinzugefügt, unabhängig davon, wie oft Sie aufrufen addRule
(der letzte Anruf zählt).