2012-11-21 1 views
1

중단 될 때까지 상대 레이아웃에보기를 추가하는 응용 프로그램을 빌드 중입니다. 내 질문에 어떻게 RelativeLayout.LayoutParams.addRule이 작동합니까? addRule을 계속 호출하면 계속 증가하는 목록을 만들거나 addRule에서 규칙이 이미 있는지 확인합니까? 다음 코드가 실제로 필요한 것입니까? addRule을 사용할 수 있습니까? 이미 존재하는 경우 중복 항목이 생성되지 않습니까?LayoutParams.addRule은 어떻게 작동합니까?

덕분에 당신은 규칙이 규칙이 인덱스입니다 int 배열에 저장되어있는 것을 볼 수 RelativeLayout.LayoutParams 클래스의 코드를보고

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

, 그래서 규칙은 한 번에 상관없이 추가됩니다 addRule에 전화 한 횟수 (마지막 호출이 포함됩니다).