2012-04-08 3 views
1

4 개의 RelativeLayout을 동적으로 생성하여 각 후속 레이아웃이 이전 레이아웃 아래에 배치되도록하고 싶습니다. 이 코드 조각을 수행하려고합니다.레이아웃의 위치를 ​​동적으로 설정하십시오.

RelativeLayout layoutParent = (RelativeLayout)findViewById(R.id.layoutParent); 
    int layouts = 4; 

     int dp15 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics()); 

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
      params.setMargins(dp15, dp15, dp15, dp15); 


     for (int l = 0; l <= layouts; l++) 
     { 
      RelativeLayout queueLayout = new RelativeLayout(getApplicationContext()); 
      TextView one = new TextView(getApplicationContext()); 
      one.setText(String.valueOf(l)); 
      queueLayout.setId(2000 + l); 
      if (l != 0) params.addRule(RelativeLayout.BELOW, queueLayout.getId() - 1); 
      queueLayout.addView(one, params); 
      layoutParent.addView(queueLayout); 
     } 

그러나 각 레이아웃에서 원하는 위치를 얻을 수 없습니다. 누군가 내가 할 수있는 일을 어떻게 할 수 있는지 말해 줄 수 있습니까?

미리 감사드립니다.

답변

2

BELLOW 규칙을 설정했지만 부모 레이아웃에 RelativeLayout 자식을 추가 할 때는 결코 사용하지 마십시오 (MisterSquonk의 말처럼). 또한 아이 RelativeLayout에 대한 LayoutParams의 또 다른 세트를 사용 : 당신이 말한 일을 내가 해봤

for (int l = 0; l <= layouts; l++) { 
     RelativeLayout queueLayout = new RelativeLayout(getApplicationContext()); 
     TextView one = new TextView(getApplicationContext()); 
     one.setText(String.valueOf(l)); 
     queueLayout.setId(2000 + l); 
     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     if (l != 0) lp.addRule(RelativeLayout.BELOW, queueLayout.getId() - 1); 
     queueLayout.addView(one, params); 
     layoutParent.addView(queueLayout, lp); 
    } 
+0

하지만 동일한 결과 ... –

+0

@KrLx_roller는'TextView's는 중복합니까? – Luksprog

+0

네, 그 때마다 내가 애플 리케이션을 실행할 때마다 일어나고있다. –

관련 문제